2017-10-05 90 views
0

我在我的目錄中的兩個文件:foo {bar,baz}爲什麼不展開爲「foobar」和「foobaz」?

com.my.arsys.core.js 
com.my.arsys.core-libs.js 

現在我想匹配這些使用通配符模式(大括號),並將其複製到a文件夾,所以我運行以下命令:

cp com.my.arsys.{core, core-libs}.js a 

然而我收到以下錯誤:

cp: cannot stat 'core,': No such file or directory 
cp: cannot stat 'core-libs,': No such file or directory 

我認爲問題出在語法上。任何人都可以幫忙嗎?

+3

順便說一句,這實際上並不是一個全局模式。全局模式只擴展到存在的文件;大括號擴展爲您提供結果,無論給定的名稱是否以文件形式存在。如果你正在運行,比如說'{a,b} *。txt',則括號擴展將產生兩個結果,即'a * .txt'和'b * .txt',然後這些結果將分別擴展爲一個glob。 –

+1

...這意味着,考慮到'{a,b} *。txt'的例子,如果你有'boo.txt'並且沒有以'a'開始並且以'.txt'結尾,你可能會得到結果'a * .txt'和'boo.txt':有一個結果的glob會被擴展,不會的不會。 (如果你的shell的運行時配置有諸如'failglob'或'nullglob'設置的選項,這個行爲可以進一步修改)。 –

+0

@CharlesDuffy,非常感謝你的支持! –

回答

2

你有一個額外的空白,嘗試:

cp com.my.arsys.{core,core-libs}.js a 

從bash的男子約括號擴展

一個正確形成的花括號擴展必須包含沒有引用的打開和關閉括號,並在至少一個未加引號的逗號或有效的序列表達式。任何不正確形成的支架擴展保持不變。

相關問題