grepが奇妙に動作します

grepが奇妙に動作します

Grepは私のシステムの1つ(Ubuntuデスクトップ - 他のすべてのシステムはUbuntuサーバーです)で奇妙に動作しますが、その理由を理解できません。という制御ファイルを作成しました。テキストこれには次のテキストが含まれています。

grep
test!!

次のコマンドは、すべてのシステムで動作します(該当するサブシステムを除く)。

$ grep grep *
text:grep
$ grep 'test!!' *
text:test!!

私の場合、サブgrepは中止されました。私は比較しました.bashrc.bash_aliasまたは/etc/bash_completionしかし、問題が見つかりません。問題の原因が何であるかをご存知ですか?

答え1

そのマシンのディレクトリにソケット、名前付きパイプなどのgrep 'something' *特殊ファイルがありますか?

少なくとも名前付きパイプの場合、grepは実際に名前付きパイプにEOFを書き込むまで名前付きパイプからEOFを取得しません。

答え2

停止すると、標準入力から入力を探すように聞こえます。

Ctrl-Dを1回だけ入力すると、これを証明できます。これでシェルに戻ります。

これが正しい場合、*ファイルが見つかりません。

答え3

同様の問題がありましたが、犯人は「-」という名前のルージュディレクトリでした。これは、ディレクトリ名ではなく「標準入力から読み取る」と解釈された可能性が高いです。

> grep 'something' * 
> grep 'something' f1 f2 f3 - f4 f5  ...

関連情報