ag 搜索工具参数详解
Ag 是类似ack, grep的工具,它来在文件中搜索相应关键字。
官方列出了几点选择它的理由:
- 它比ack还要快 (和grep不在一个数量级上)
- 它会忽略.gitignore和.hgignore中的匹配文件
- 如果有你想忽略的文件,你需要将它们加入到
.ignore
文件中 - 它的命令名称更短:-)
安装
ubuntu直接安装:
sudo apt install silversearcher-ag
基本使用
ag的基本使用很直接:在命令后面跟要搜索的字符串即可,它会搜索当前目录下所有文本文件,并返回结果。
ag Module
输出:
可以看到,会有很清晰地高亮输出显示,而且,真的是,非常快。
.ignore
文件中指定的文件名会被跳过,不进行搜索。直接把想要忽略的文件名写进去就行:
# .ignore
model.py
trainer.py
详细格式及命令选项
下面介绍一些 ag 的常用参数选项及其含义:
选项 | 功能 |
---|---|
-s / -i / -S
|
大小写敏感 / 不敏感 / 智能大小写判断(默认),即有大写就开启大小写敏感,否则不敏感 |
-c |
count,输出每个文件中有几个匹配字串 |
-A / -B / -C [NUM] |
after / before / context,展示匹配到字串的[后/前 / 前后都有] NUM 行,默认2行 |
-a |
搜索全部文件,包括 .ignore 忽略的文件,不包括隐藏文件 |
-D |
Output ridiculous amounts of debugging info. Not useful unless you´re actually debugging. (这句是手册原文,笑) |
-f |
追踪软链接,默认不追踪 |
-g [PATTERN] |
输出匹配 PATTERN 的文件名 |
-G [PATTERN] |
仅搜索文件名匹配 PATTERN 的文件内容 |
-l / -L
|
仅输出能 / 不能内容匹配成功的文件的文件名,不输出行内容 |
-m [NUM] |
仅输出前 NUM 次成功匹配的内容,跳过剩下的,默认为0,即全部输出 |
-r / -n
|
是 / 否进入目录进行递归搜索,默认会进行递归搜索 |
-o |
只输出行中匹配成功的部分 |
-p [PATH] |
提供指定的 .ignore 文件的路径,默认为当前目录下 |
-Q |
不将 PATTERN 按照正则表达式来解析 |
-u |
搜索所有文件,包括二进制文件,但还是会忽略 .ignore 等文件 |
-U |
忽略 VCS ignore文件(包括.gitignore, .hgignore),但仍然会考虑 .ignore,就是前面两者中的内容会被搜索,但是 .ignore 中的内容还是会被忽略 |
-w |
只匹配整个单词 |
-V |
输出版本信息 |
-v |
匹配所有不包含指定字串的行 |
z |
搜索压缩文件中的内容 |
另外一些选项:
选项 | 功能 |
---|---|
--ackmate |
以可由AckMate解析的格式输出结果 |
--hidden |
搜索隐藏文件,但不会搜索忽略文件,即与 -a 相反 |
--depth [NUM] |
搜索目录深度,-1 为无限制,默认为 25 |
--ignore PATTERN |
忽略名称匹配到 PATTERN 的文件或目录的内容,即与 -G 相反 |
--[no]break |
搜索结果的不同文件之间是否空行,默认空行 |
--[no]color |
是否有颜色高亮显示,默认有 |
--column |
输出列号 |
这就基本全了,还有一些不是很常用的参数,全部的选项参数可 man ag
来查看。