2

|(バー) を \ (バックスラッシュ) と間違えました

locate abcdef \ grep 2

このような。次に、bash を開始して、名前に「2」を含むすべてのファイルを検索します。
なぜこれが起こるのですか?

4

3 に答える 3

5

あなたのコマンド:

locate abcdef \ grep 2

locateつまり、コマンド\ grep 2の引数として残りのテキストを作成したため、コマンドのlocate処理を開始しましlocateた(grepはまったく実行されませんでした)。

于 2013-10-24T08:14:36.127 に答える
3

バックスラッシュは、シェルによって引数の区切り文字として解釈されないように、スペースをエスケープしただけです。したがって、今呼び出したのは、locate3 つの引数を持つコマンドでした。最初の引数はabcdef、2 番目の引数は grep(先行スペース付き)、3 番目の引数は2です。

locateそのような場合、少なくとも 1 つの検索語が含まれるすべてのファイルが一覧表示されます。

于 2013-10-24T08:56:47.987 に答える
0

コマンドは、ファイル名に 2 が含まれるシステム内のすべてのファイルを検索します。\ はグロビング文字であるため、 の暗黙的な置換が無効になりますNAME by *NAME*

locate filename \ grep 2

これはファイル名を無視し、ファイル名に 2 を含むファイルの検索を開始します

于 2013-10-24T09:08:37.147 に答える