2016-05-12 117 views
-1

在linux中,我使用touch命令創建了一個名爲test2的文件。這兩個命令之間的區別(w&w/out「」)以及爲什麼?

當我運行命令

find . –name 「*test*」 -ls 

它不給我一個錯誤,但是當我運行

find . –name *test* -ls 

它給了我一個錯誤

發現:路徑用法: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或許多字符串。

使用引號,shell將忽略星號並將原始字符串*test*傳遞到find,然後將這些星號用作通配符,如您所期望的那樣。

相關問題