在Linux命令行下进行文本关键字的搜索,你们肯定第一时间会想到grep命令。grep命令确实非常强悍,但若果须要用到它愈发灵活的功能时,可能命令都会变得非常复杂。
于是,为了简化grep的句子并达到同等效果,好多业内前辈开发出了好多同样强悍的工具,在个别程度上甚至可以代替grep。
下边我就给你们介绍5个常用的命令行搜索工具。假如你不喜欢使用编辑器或IDE来查找代码关键字,这么这几个工具将对你非常有帮助。
这5个工具有些仅适用于类Unix系统,但也有一些是跨平台的搜索速率十分快的工具。
grep
使用grep的优势是它几乎可以在任意类Unix系统上使用。这个命令的强悍之处我相信你们都有所耳闻了。下边我给你们介绍几个我最常使用grep命令的几种方法。
假如你只想在py文件中找到一个关键字而且输出行号,可以这样操作:
nbsp;grep -rins --include *.py import .
如果我们前几天在命令行中输入了一个比较复杂命令,然而如今我们仅仅追忆起部份命令。这么我们可以通过管线(|)使用grep命令来搜索历史记录命令:
nbsp;history | grep "python"
这条命令执行以后,我们就可以找到我们以前所运行过的所有包含python关键字的命令,之后我们就可以通过!来重新执行这条命令。
nbsp;history | grep “python”
284 python test.py
... #省略其它结果
nbsp;!284
nbsp;python test.py
ack
ack你们相对就不是这么熟悉了,它是「一个类似于grep而且为程序员优化过的工具」。它在默认情况下以递归方法搜索linux系统中怎么搜索文件命令大全,并且会忽视版本控制工具目录,诸如.git目录。而且它自带好多很实用的工具,可以大大提升我们搜索效率。
我们同样再掏出里面的事例来举例,下边我们使用ack命令来实现仅在py文件中搜索import关键字的方式:
# ack 命令实现方式
nbsp;ack import --py
# grep 命令实现方式
nbsp;grep -rins --include *.py import .
里面是仅在py文件进行搜索,那如果我们想搜索除py文件类型以外的所有其他类型的文件,要如何操作?
对于每位文件类型linux解压rar,都有一个对应的no标示,来排除对这个文件类型搜索。例如,想搜索py文件的话就使用--py选项,而想排除py文件的话就使用--nopy选项。
nbsp;ack import --nopy
其实文件类型有特别之多,我们还可以通过更改~/.ackrc文件来扩充文件类型。如果我们如今想搜索.conf文件linux系统中怎么搜索文件命令大全,默认情况下ack不支持这些文件:
nbsp;ack hello --conf
Unknown option: conf
ack: Invalid option on command line
要注册.conf文件类型,我们可以将以下内容添加到~/.ackrc文件中,然后我们就可以正常搜索conf文件了。
--type-set=conf=.conf
配置文件更改以后,我们可以使用--help-types选项来确认自定义类型是否早已成功加上。
ack命令从.ackrc文件中获取配置信息,但怎样你想脱离.ackrc文件来运行ack命令的话,可以使用-noenv选项。
TheSilverSearcher
该搜索器是另一个类似于ack的grep代替品,其更快的性能让你们很推崇。它有个十分实用的特性,那就是它会忽视在项目工程中的.gitignore文件所指定的文件。所以假如你想排除搜索一些文件查看linux是什么系统,就可以将这些文件写在.gitignore文件里。
假如说thesilversearcher你们可能不是很熟悉,但它的另一个名子可以就有点如雷贯耳了:ag命令。
在Ubuntu系统上可以使用以下命令来安装ag命令:
nbsp;apt-get install silversearcher-ag
使用ag命令来搜索py文件里包含关键字import的内容:
nbsp;ag import --py
ag命令非常强悍,限于篇幅本文只介绍它最基本的用法,改天有时间的话再补充一下它其它特别强悍的功能用法。
sift
sift是使用Golang编撰的grep代替品,这意味着它可以在Linux,Windows,OSX和其他系统上使用。它的速率快得离谱,但是有一些很酷的用例来取代grep+awk组合来提取数据。
我们再使用sift命令来搜索所有py文件里包含import关键字的内容:
# 只搜索 py 文件:
sift --ext py import
# 排除 py 文件
sift --exclude-ext py import
RipGrep
RipGrep与SilverSearcher类似,可以在Mac、Linux和Windows上运行。它的readme文件宣称,RipGrep一般比其他任何搜索工具都快,它推崇Rust的正则表达式引擎,并像SilverSearcher一样使用.gitignore文件来排除一些文件或目录。
RipGrep一般简称为rg,我们再使用rg命令来搜索所有py文件里包含import关键字的内容:
rg --type=py import
小结
命令行下有好多实用的搜索工具,恰当地使用这种工具会给我们的工作提升很大的效率。本文介绍了5个常用的搜索工具,但限于篇幅未能作深入介绍。更详尽的介绍可以参阅网路上的一些文章,或则它们的manpage,前面我也会相继对每位命令进行详尽介绍,记得关注哦~