#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org
对程序员来说, grep, cat, 真心是伟大的前辈们赐予我们这些晚辈最好的礼物, 不会用 grep, cat 之类程序员真心没有出息.
但是不知是否有人经常使用以下的语法, 而且感到要是 grep 要是在智能一点就好了
$ grep terminate_instance $(find . -name '*.py' | grep -v tests)
不错, ack 就是为了满足我们希望 grep 更好用这样的前提下被开发出来的, 首先从他的 官网 beyondgrep.com 就可以看出来 :) 官网给出比 grep 好的理由是:
- 速度非常快 因为它只搜索有意义的东西.
- 更好的搜索方案 默认忽略那些不是你想搜索的源码的东西, .e.g. git, svn 目录
- 为源代码搜索而设计 用更少的击键完成任务
- 移植性非常好 该程序用 Perl 完成的, 可以在几乎所有主流平台上使用, windows, mac, linux 等
- 免费开源
安装
不求那些炫酷的安装方式, 在 一般的 linux 平台, 用包管理器, 比如在 centos/fedora:
# yum install -y ack
在 OSX, 使用 brew
$ brew install ack
使用
回到文首的那个用法, 现在可以很简单的用 ack 来完成, 而且速度暴快:
$ ack --python --ignore-dir=tests terminate_instance
该程序的一般使用很简单:
$ ack --type PATTERN
其中 type 指定需要搜索的源代码类型, 比如 –python, 其它大部分选项和 grep 一样, 文档是说 99%.
高级使用
请参考 官网