web-dev-qa-db-ja.com

デフォルトでgrep -rはどこを検索しますか?

パスを指定せずにgrepを使用して検索すると、grep -r 'mytext'のように無限に時間がかかります。一方、grep -r 'mytext' .を指定してパスを検索すると、必要なものがすぐに見つかります。それで、私は最初の形式でgrepがどのディレクトリを検索するのか興味がありますか?

UDATE:grepバージョン:grep(GNU grep)2.10

16
user7477

実際にはどこも検索しません。標準入力からの入力を待ちます。

これを試して:

beast:~ viroos$ grep foo

「foo」を含む行を入力してEnterキーを押すと、この行が繰り返されます。そうでない場合、カーソルは新しい行に移動しますが、grepは何も出力しません。

25
Maciek Sawicki

Maciekによる以前の回答のとおりです。

実際にはどこも検索しません。標準入力からの入力を待ちます。

ただし、0番目の最初の記述子にデータをパイプすることによって/ procが利用可能であれば、すでに実行中のプログラムのstdinに書き込むことができます。

1回のターミナルで

grep "hello"

そして、それが無期限に待機するのを見てください...別の端末でこれを入力してください:

echo "hello $USER" > /proc/`pgrep grep`/fd/0

最初のターミナル印刷helloとユーザー名を確認してください。

3
Philluminati