
ack_ampliado
对于系统管理员或程序员来说,当需要在复杂配置的目录中或者在大型源码树中搜寻特定的文本或模式时,grep类型的工具大概是最受欢迎的。
如果grep是你最喜欢的工具之一,那么你可能会更喜欢ack。ack是一个基于perl的类似于grep的命令行工具,但是搜索速度更快,能力比grep更强。尤其是当你是程序员时,我强烈推荐你使用ack来取代grep。
ack的用法非常适用与代码搜索,因此程序员可以在源码树中进行复杂的查询,而只需要更少的按键。
<a target="_blank"></a>
ack的一些非常强大的特性:
默认搜索当前工作目录
默认递归搜索子目录
忽略元数据目录,比如.svn,.git,csv等目录
忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp)
在搜索结果中打印行号,有助于找到目标代码
能搜索特定文件类型(比如perl,c++,makefile),该文件类型可以有多种文件后缀
高亮搜索结果
支持perl的高级正则表达式,比grep所使用gnu正则表达式更有表现力。
相比于搜索速度,ack总体上比grep更快。ack的速度只要表现在它的内置的文件类型过滤器。在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。
尽管在大多数linux发行版中是ack是标准包,可轻易获得(比如在基于debian的系统中,是ack-grep包,而在基于redhat的系统中则是ack包),但是与发行版捆绑的ack版本仍然是1.x,而ack2.0已经发布,而且拥有更多特性。
因此我准备在官方网站下载,然后安装ack。
方便的是,ack在官网可可作为一个单独的perl脚本获得,其中整合了所有需要依赖的模块。因此,你不需要额外安装perl模块来运行这脚本。
需要注意的是,在基于debian的系统中,有一个独立的包也叫ack(汉码转换器)。所以如果你碰巧有使用那个包,那么你就必须重命名ack来避免命名冲突了。
ack_1
ack_2
原文发布时间为:2014-03-03
本文来自云栖社区合作伙伴“linux中国”