2016-05-12 4 views
-1

Linuxではtouchコマンドを使用して作成したtest2というファイルが自分のディレクトリにあります。私は、コマンドを実行するとこれら2つのコマンドの違い(w&w/out "")とその理由は?

find . –name “*test*” -ls 

は、それは私にエラーを与えるものではありませんが、私は

find . –name *test* -ls 

を実行したときにそれは私にエラーを与えた

検索:パスtest2 使用法:find [-H] [-L] [-P] [-Olevel] [-D help | tree | search | stat | rates | opt | exec] [path ...] [expression ]

なぜですか?

答えて

1

*test*は、glob expanded by your shell(複数のトークンに)を取得します。

"*test*"でグロブ拡張が行われないのは、周囲の"シンボルがグロビングを防止するためです。

0

あなたのシェルは*test*を傍受し、それがfindに展開されたリストを渡し前に、その式に一致するカレントディレクトリ内のファイルやディレクトリを探しています。 findは、その箇所に単一の文字列しか必要としませんが、展開されたリストは0個以上の文字列である可能性があります。

引用符を使用すると、シェルはアスタリスクを無視して、生の文字列*test*findに渡します。アスタリスクは期待どおりのワイルドカードとして使用されます。

関連する問題