轉至:https://www.icode9.com/content-3-209958.html
雙引號(和單引號)是否抑制了通配符擴展?如果是這樣,那么為什么以下呢?
find -name "d*"
沒有suppess通配符*?也就是說,上述命令的輸出都是以字母d開頭的文件和目錄的所有路徑,就好像正在進行一些擴展一樣.我期望通配符被抑制,因此它只會輸出到名為d *的文件的路徑,但事實並非如此.
這是否意味着雙引號在某些情況下會有例外情況?
謝謝!
解決方法:
引號抑制shell的通配符擴展,這意味着在這種情況下,查找-name的參數將是文字d *.
如果沒有引號,shell將是擴展通配符的shell,在這種情況下,d *將擴展為以d開頭的當前目錄中的所有名稱的列表,或者在沒有此類文件的情況下擴展為d *.
-name搜索標准將模式作為參數使用與shell globs相同的語法.在這種情況下,模式旨在由find解釋,而不是由shell解釋,因此需要引號.
要搜索文字*,可以將其括在方括號中:
find -name "d[*]"
或用反斜杠逃避它:
find -name 'd\*'