non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

ackをTLで見かけ、agを知り、grep -nを理解した件

おはようございます。次男(#2013may_baby)、最近は話しかけるとニコニコするときも出て来たkjunichiです。といっても基本泣くのが仕事のようですが。。

 

grep -n の引数に/dev/nullを付ける意味

先日TL上でackの事が取り上げられていて、もっと早いコマンドもあったよなーとagを見つけて、そもそもgrepだとどうやるんだ?とググって、ようやく長年の謎が解けた件。

複数ファイルを検索する際、その昔、findとxargsを駆使するやり方だと、

grep -n HOGE file

とした場合に、ファイル名が表示されないことがあり、

find . -print -exec grep -n {}\;

としてfindでファイル名を表示しつつ-execでgrepして、さらにPerlで整形していたことがあった黒歴史を思い出した。

find . -print|xargs grep -n HOGE /dev/null

/dev/null

を付けることで、つねにgrepに対して複数ファイルを指定したことになり、

grep -n

でファイル名と行番号が表示されることが理解できた。

当時の俺は、/dev/nullを単にエラー時を消す呪文と勘違いして、ガン無視して、/dev/nullを付けずに打って、上手くいくときとダメなときがあるから、前述の-execに頼っていたのだった。

リンク

関連記事