從man bash
:
如果選擇了nullglob設置,並沒有 找到匹配,這個詞是 刪除。
例如:
betelgeuse:TEST james$ touch TEST1 TEST3
betelgeuse:TEST james$ ls *TEST* *TEST2*
ls: *TEST2*: No such file or directory
TEST1 TEST3
betelgeuse:TEST james$ shopt -s nullglob
betelgeuse:TEST james$ ls *TEST* *TEST2*
TEST1 TEST3
這大約相當於csh
行爲:
[betelgeuse:/tmp/TEST] james% ls *TEST* *TEST2*
TEST1 TEST3
的區別在於csh
將返回一個錯誤的文件名模式的如果所有一條線不能匹配任何東西:
[betelgeuse:/tmp/TEST] james% ls *TEST4* *TEST2*
ls: No match.
而bash
只返回令牌的列表的命令,導致古怪像這樣:
betelgeuse:TEST james$ ls *TEST4* *TEST2*
TEST1 TEST3
*TEST4*
和*TEST2*
都返回什麼;所以ls
命令認爲它已被調用,沒有參數,只給出了目錄的列表。在你的例子中,焦油會(正確)抱怨它沒有被處理的文件。
使用引號:''* TEST * '* TEST2 *'',' 「* TEST *」, 「* TEST2 *」',或者使用反斜線:'\\ * TEST \\ * \\ *。 TEST2 \\ *'。 – 2010-01-07 09:03:44
這不起作用。 tar:* TEST *:不能stat:沒有這樣的文件或目錄 tar:錯誤退出延遲以前的錯誤 – 2010-01-07 09:09:45