おはようございます。次男(#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に頼っていたのだった。
リンク
- UNIXの部屋 コマンド検索:xargs (*BSD/Linux)
- Beyond grep: ack 2.04, a source code search tool for programmers
- ggreer/the_silver_searche
関連記事
- PS1にexportが不要だった件
- Raspberry PiにHerokuのツールを入れて/bin/dashを知った件
- イマドキのsleepは小数点の指定が出来ていた件
- なぜ、waitpidをループ処理させるのか