前言Ag是一个类似于ack和grep的工具,用于在文件中搜索对应的关键字。官方列举了几个选择它的理由:比ack快(和grep不在一个数量级),会忽略.gitignore和.hgignore中的匹配文件。.min.jscough*)添加到.ignore文件中,命令名更短:-)安装源码安装下载源码下载地址:http://geoff.greer.fm/agInstallPCRECurrently有PCRE2,不过这里需要PCREhttps://downloads.sourceforge...官网下载.tar.gz版,注意不要下载zip版,下载后解压正常安装./configure--prefix=/usr\--docdir=/usr/share/doc/pcre-8.41\--enable-unicode-properties\--enable-pcre16\--enable-pcre32\--enable-pcregrep-libz\--enable-pcregrep-libbz2\--enable-pcretest-libreadline\--disable-static&&make&&makeinstall默认安装到/usr/local。lzmayum安装xz-libs.x86_64xz-devel.x86_64安装Ag./configurePCRE_CFLAGS="-I/usr/local/include"PCRE_LIBS="-L/usr/local/lib-lpcre"&&make&&makeinstallRHEL7yum安装epel-release.noarchthe_silver_searcherCentOS7yuminstallthe_silver_searcher安装好后是最新版2.10命令用法:ag[FILE-TYPE][OPTIONS]PATTERN[PATH]递归搜索PATH中的PATTERN。类似grep或ack,但更快。例如:ag-ifoo/bar/输出选项:--ackmate以AckMate可解析格式打印结果-A--after[LINES]匹配后打印行(默认:2)-B--before[LINES]匹配前打印行(默认:2)--[no]break在不同文件中的匹配项之间打印换行符(默认启用)-c--count只打印每个文件中的匹配项数。(这通常与匹配行数不同)--[no]color在结果中打印颜色代码(默认启用)--color-line-number行号的颜色代码(默认:1;33)--color-matchColorcodesforresultmatchnumbers(Default:30;43)--color-pathColorcodesforpathnames(Default:1;32)--columnPrintcolumnnumbersinresults--[no]filename打印文件名(已启用)除非搜索单个文件)-H--[no]heading打印文件名在每个文件的匹配之前(默认启用)-C--context[LINES]在匹配之前和之后打印行(默认:2)--[no]group与--[no]break--[no]heading-g相同--filename-patternPATTERN打印匹配PATTERN的文件名-l--files-with-matches只打印包含匹配的文件名(不打印匹配的行)-L--files-without-matches只打印不匹配的文件名containmatches--print-all-files打印搜索到的所有文件的标题,即使是那些不包含matches的文件--[no]numbers打印行号。默认是在搜索流时省略行号-o--only-matching只打印行的匹配部分--print-long-lines在很长的行上打印匹配(默认:>2k个字符)--passthrough当搜索一个流,打印所有行,即使它们不匹配--silent抑制所有日志消息,包括错误--stats打印统计信息(扫描的文件、花费的时间等)--stats-only打印统计信息,仅打印统计信息。(与--cou相同nt搜索单个文件时)--vimgrep像vim的:vimgrep/pattern/g那样打印结果(它报告行中的每个匹配项)-0--null--print0用null分隔文件名(对于'xargs-0')搜索选项:-a--all-types搜索所有文件(不包括隐藏文件或忽略文件的模式)-D--debug可笑的调试(可能没有用)--depthNUM搜索最多NUM个目录(默认:25)-f--follow遵循符号链接-F--fixed-strings--literal的别名以与grep-G兼容--file-search-regexPATTERN将搜索限制为匹配PATTERN的文件名--hidden搜索隐藏文件(obeys.*ignorefiles)-i--ignore-caseMatchcaseinsensitively--ignorePATTERNIgnorefiles/directoriesmatchingPATTERN(literalfile/directorynamesalsoallowed)--ignore-dirNAME--ignore的别名,以与ack兼容。-m--max-countNUM在NUM匹配后跳过文件的其余部分(默认值:10,000)--one-device不要跟踪指向其他设备的链接es.-p--path-to-ignoreSTRING在STRING处使用.ignore文件-Q--literal不要将PATTERN解析为正则表达式-s--case-sensitive区分大小写-S--smart-caseMatch不区分大小写,除非PATTERN包含大写字符(默认启用)--search-binary搜索匹配的二进制文件-t--all-text搜索所有文本文件(不包括隐藏文件)-u--unrestricted搜索所有文件(ignore.ignore,.gitignore,etc.;搜索二进制和隐藏文件)-U--skip-vcs-ignoresIgnoreVCSignorefiles(.gitignore,.hgignore;stillobey.ignore)-v--invert-match-w--word-regexp只匹配整个单词-W--widthNUM在NUM个字符后截断匹配行-z--search-zip搜索压缩(例如gzip)文件的内容文件类型:搜索可以限制为某些类型的文件。示例:ag--htmlneedle-在后缀为.htm、.html、.shtml或.xhtml的文件中搜索“needle”。要获得支持的文件类型列表,请运行:ag--list-file-typesag最初由GeoffGreer创建。更多信息(和最新版本)可以在http://geoff.greer.fm/ag自动安装脚本示例#!/usr/bin/envbash#Author:HarrisZhu#Dep:确保你有root权限#Usage。install_ag.shset-xTEMP_DIR=$(mktemp-dLeslie.Guan.XXXXXX)cd${TEMP_DIR}wgethttps://github.com/ggreer/the_silver_searcher/archive/master.zipTAR_DIR=$(解压*.zip)TAR_DIR=${TAR_DIR%%/*}TAR_DIR=${TAR_DIR##*:}cd${TAR_DIR}apt-getinstall-yautomakepkg-configlibpcre3-devzlib1g-devliblzma-dev--force-yes./build.sh&&makeinstallcd../../rm-rf${TEMP_DIR}ag-Vset+xpattern例子1从上面的例子可以知道ags,w等正则表达式的模式支持。ag的使用很简单,选项也不多,所以上面列出了它的帮助内容。已经很强大了,再搭配fzf会更强大,所以下一篇我会写fzf。
