メモ

調べたり思いついたりしたことをメモします

grepの高速版「ag」 (The Silver Searcher)

grepを使う場面のほとんどはソースコードの検索です。
むしろそれ以外のケースで使うことはほとんどないのではないでしょうか。

ですので使い方の多くは

$ grep keyword *.cpp

とか

$ find . -name \*.cpp | xargs grep keywork

のようなコマンドをタイプすることになろうかと思います。

ですが .svn や .git の下は対象外にしてほしい、.gitignoreで無視指定されたファイルは対象外にしてほしい等、細かなケースでの融通を利かせるには少々不便であることが難点です。なによりタイプする字数が多くて面倒です。

そこで ag が便利です。
ggreer/the_silver_searcher · GitHub
正式名は The Silver Searcher というそうです。

ubuntu 13.10以降ではこんな感じにインストールできるらしいのですが

$ apt-get install silversearcher-ag

私はubuntu12.04を使っているためうまくいきません。ですがソースからビルドするだけで簡単にインストール可能でした。

$ sudo apt-get install -y automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev
$ git clone  https://github.com/ggreer/the_silver_searcher.git
$ ./build.sh
$ sudo make install

これで /usr/local/bin にインストールされます。
これのメリットは使い方が簡単でタイプ数が少なくて済むことと、grepよりはるかに高速であること、出力結果がファイル毎に分けられていて読みやすい、という所にあります。

$ ag keyword

使い方はこんな風にするだけでカレントディレクトリ配下のソースコードを検索してくれます。
くわしいオプションなどはこちら参照で。

なにより *.cpp みたいにShiftキーを使わないと書けない「*」を使わなくて良い点がかなりストレスを減らしてくれます。一度使い始めるともうこれしか使わなくなるほど便利です。