在bash提示符我可以執行這個複製的cp複製命令
cp file.txt test1.txt
,但如果我嘗試file.txt的複製到多個文件,像這樣
cp file.txt test{2..4}.txt
我獲取錯誤
cp:target`test4.txt'不是目錄
在bash提示符我可以執行這個複製的cp複製命令
cp file.txt test1.txt
,但如果我嘗試file.txt的複製到多個文件,像這樣
cp file.txt test{2..4}.txt
我獲取錯誤
cp:target`test4.txt'不是目錄
這不是關於bash,而是關於cp。如果你提供兩個以上的參數,最後一個應該是一個目錄,所有其他的目錄都要複製。
for f in test{2..4}.txt ; do cp file.txt $f ; done
那麼,你必須瞭解* nix shell是如何工作的。
在DOS/Windows環境中,通配符由程序處理。因此,例如,xcopy *.txt *.bak
,意味着xcopy
被給出2個參數:*.txt
和*.bak
。通配符如何被完全解釋取決於xcopy
。
在* nix世界中,通配符由shell處理。例如,類似的命令xcopy *.txt *.bak
首先擴展爲xcopy <list of files ending with .txt> <list of files ending with .back>
。因此,假設file1.txt
存在於file4.txt
,再加上另一個文件old.bak
,該命令將擴大到xcopy file1.txt file2.txt file3.txt file4.txt old.bak
對於cp
命令,這也正是邁克爾寫道:如果你給cp
超過2 ARGS,最後ARG必須成爲一個目錄。