在Linux命令行下搜索文本关键字,大家第一时间肯定会想到grep命令。grep命令确实很强大,但是如果需要使用它更灵活的功能,命令可能会变得很复杂。因此,为了简化grep语句并达到同样的效果,业界很多专家开发了很多同样强大的工具,甚至可以在一定程度上替代grep。下面我就给大家介绍5个常用的命令行搜索工具。如果您不喜欢使用编辑器或IDE来查找代码关键字,那么这几个工具将对您有很大帮助。这5个工具中有一些只适用于类Unix系统,但也有一些非常快速的跨平台搜索工具。grep使用grep的好处是它几乎可以在任何类Unix系统上使用。相信大家都听说过这个命令的威力。下面给大家介绍一下我最常使用grep命令的一些方法。如果只想在py文件中查找关键字并输出行号,可以这样做:$grep-rins--include\*.pyimport。如果前几天我们在命令行输入了比较复杂的命令,但是现在我们只是回忆了一些命令。然后我们可以通过管道(|)使用grep命令来搜索历史命令:$history|grep"python"这个命令执行后,我们可以找到我们曾经运行过的所有包含python关键字的命令,然后我们就可以通过了!重新执行此命令。$历史|grep"python"284pythontest.py...#省略其他结果$!284$pythontest.pyackack相对大家来说不是那么熟悉,是“一个类似grep,为程序员优化的工具”。它默认递归搜索,但忽略版本控制工具目录,例如.git目录。并且它自带了很多非常好用的工具,可以大大提高我们的搜索效率。我们再以上面的例子为例。接下来我们使用ack命令来实现只在py文件中查找import关键字的方法:#ack命令实现方法$ackimport--py#grep命令实现方法$grep-rins--include\*.py进口。上面是只在py文件中搜索,那么如果我们要搜索除py文件类型之外的所有其他类型的文件,怎么办呢?对于每种文件类型,都有一个相应的no标志来排除对该文件类型的搜索。例如,如果要搜索py文件,请使用--py选项;如果要排除py文件,请使用--nopy选项。2020精选阿里/腾讯等一线公司面试、简历、进阶、电子书公众号《良旭Linux》后台免费回复“数据”$ackimport--nopy当然文件有很多种,我们还有Filetypes可以通过修改~/.ackrc文件来扩展。假设我们现在要搜索.conf文件,ack默认不支持:$ackhello--confUnknownoption:confack:Invalidoptiononcommandline要注册一个.conf文件类型,我们可以在~/.ackrc文件,那么我们就可以正常搜索conf文件了。--type-set=conf=.conf配置文件修改后,我们可以使用--help-types选项来确认自定义类型是否添加成功。ack命令从.ackrc文件中获取配置信息,但是如果你想在没有.ackrc文件的情况下运行ack命令,你可以使用-noenv选项。SilverSearcher是另一个类似ack的grep替代品,因其更快的性能而备受推崇。它有一个非常有用的特性,就是它会忽略项目工程中.gitignore文件中指定的文件。所以如果你想从搜索中排除一些文件,你可以把这些文件写在.gitignore文件中。如果说silversearcher,你可能不是很熟悉,但它的另一个名字可能有点耳熟:ag命令。在Ubuntu系统上,可以使用如下命令安装ag命令:$apt-getinstallsilversearcher-ag使用ag命令在py文件中搜索包含关键字import的内容:$agimport--pyag命令非常强大,限于篇幅,本文只介绍它最基本的用法,如果改天有时间,我会补充它其他非常强大的功能。siftsift是用Golang编写的grep替代品,这意味着它可以在Linux、Windows、OSX和其他系统上使用。它快得离谱,并且有一些很酷的用例来代替grep+awk组合来提取数据。2020阿里巴巴/腾讯等一线公司精选面试、简历、进阶、电子书公众号《良旭Linux》后台回复《资讯》免费获取我们再用sift命令搜索所有py文件包含导入关键字内容:#仅搜索py文件:sift--extpyimport#排除py文件sift--exclude-extpyimportRipGrepRipGrep类似于SilverSearcher,适用于Mac、Linux和Windows。它的自述文件声称RipGrep通常比任何其他搜索工具都快,它尊重Rust的正则表达式引擎,并使用像SilverSearcher这样的.gitignore文件来排除一些文件或目录。RipGrep通常简写为rg,我们使用rg命令搜索所有包含import关键字的py文件:rg--type=pyimport我们的工作效率大大提高。本文介绍5个常用的搜索工具,限于篇幅无法做深入介绍。更详细的介绍可以参考网上的一些文章,或者他们的manpages。后面会详细介绍每一个命令,记得关注哦~看完是真爱,走之前给个赞吧?您的“三通”是良旭继续创作的最大动力!关注原创公众号《良序Linux》,第一时间获取最新Linux干货!公众号后台回复【信息】【面试】【简历】获取精选一线大厂的面试、自我提升、简历等信息。关注我的博客:lxlinux.net
