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 ...