ackを使おう!
みなさんgrepしてますか!?
grepを使いこなせるようになれば一人前だ
って言われて、なにいってんのこの人きもいとか思ってないですよ全然。
まあ今となってはgrepをそれなりに使いこんでるわけですよ。
$ find . -name "*hoge" -type -f | grep -v '\.svn' | xargs grep piyopiyo
とかやってね。
なんかfind|xargs|grepとかまさにUNIX的ですよね。素敵やん。
簡単なコマンドを組み合わせてでっかいことやっちゃう??みたいな??
めんどくせーよっ!!!
ってことで、ackを使いましょう。
ack昨日知りました。
で、今日、使いはじめて2日目。
とりあえず、公式(Beyond grep: ack 2.12, a source code search tool for programmers)をおもいきり意訳しました。
↓↓
ackとは?
ackはgrep みたいなツールです。でかくてごちゃごちゃのソースコードを相手にしてるプログラマのために作られてるよ。
ackは全部Perlで書かれてるからPerl正規表現使えちゃう!
インストール方法
Textmateユーザへ
Textmateならいいかんじのプラグインあるよ!
Check it out at: http://github.com/protocool/ack-tmbundle/tree/master
各方面から喜びの声が!
- わお!最高! grepよりずっとイイネ! (Djangoの中の人)
- ack作ってくれてありがとう!毎日がちょっと楽しくなりました。 (Alan)
- ackに出あってgrepとはおさらばしました。細かいところに気が聞くね! (Samuel)
- ack最高! (redditのBill)
- grepとかありえなーい。 (Thomas)
- さよならfind-grep-xargs (Johnson)
- --thppt に惚れました/// (Daring) (← $ ack --thppt ってやってみよう)
- .svn無視してくれんのがいいよねー。 (Paul)
- standaloneをプロジェクトのdevtoolsに入れちゃった。 (Jason Gessner)
- ackまじパねえっす。 (Benjamin)
- grepでやってたことの90%はackでやってるよ。 (Randall)
- ackを使って身長がのびました。 (Jerry)
- ackを使って彼女ができました。 (Andrew)
grepよりackを使うべき10の理由
- 速い。探したいやつだけ探すから。
- 全部PerlだからWindowsでも動く。
- Standalone versionを入れれば標準モジュールしか使わないし、余計なこと気にしないですむ。
- デフォルトでツリー全体を検索。でも.svnとかは無視!
- どうでもいいファイルは探しません。
- VCSのディレクトリとか
- blibとか
- バックアップファイルとか
- binaryとかコアダンプとか
- .svnとかを無視するからgrepより速い
- ファイルタイプを指定しよう! --perlとか --nohtmlとか
- ack -f を使うとファイルのフィルタリングが出来る!
- ファイルの検索結果を色つきでハイライトしてくれる。
- GNUのサブセットじゃなくてPerlの正規表現が使える。
- Perlのスペシャル変数で出力を特定できる。
- $ ack '(Mr|Mr?s)\. (Smith|Jones)' --output='$&'
- コマンドラインオプションがgrepと似ている。
- -w は単語のみ
- -c 一致した行数の表示
- -l マッチした行ではなくファイル名を表示
- 「grep」より25%も短い!「grep -r」より50%も短い。
(...なんで13あるんだよ)
補足
すべてのファイルを検索
拡張子なしのファイルから探すときとかは-a付ければ検索対象になります。
emacsから
emacserなら使ってるよねfind-grep(grep-find)。
それのコマンドを"ack --nocolor --nogroup" に入れかえちゃえばemacsからackが使えちゃう!
grep-findより断然おすすめです。.svnもhoge~も#hoge#も無視してくれる。バイナリも無視してくれる。
ack.elなんてのがあったからそれ使うといいんじゃないかな。
これならfind-grepも今までどおり使えるし。
http://repo.or.cz/w/ShellArchive.git?a=blob_plain;hb=HEAD;f=ack.el
以上、ackの紹介でした。