|(バー) を \ (バックスラッシュ) と間違えました
locate abcdef \ grep 2
このような。次に、bash を開始して、名前に「2」を含むすべてのファイルを検索します。
なぜこれが起こるのですか?
あなたのコマンド:
locate abcdef \ grep 2
locate
つまり、コマンド\ grep 2
の引数として残りのテキストを作成したため、コマンドのlocate
処理を開始しましlocate
た(grepはまったく実行されませんでした)。
バックスラッシュは、シェルによって引数の区切り文字として解釈されないように、スペースをエスケープしただけです。したがって、今呼び出したのは、locate
3 つの引数を持つコマンドでした。最初の引数はabcdef
、2 番目の引数は grep
(先行スペース付き)、3 番目の引数は2
です。
locate
そのような場合、少なくとも 1 つの検索語が含まれるすべてのファイルが一覧表示されます。
コマンドは、ファイル名に 2 が含まれるシステム内のすべてのファイルを検索します。\ はグロビング文字であるため、 の暗黙的な置換が無効になりますNAME by *NAME*
。
locate filename \ grep 2
これはファイル名を無視し、ファイル名に 2 を含むファイルの検索を開始します