带有bash大括号扩展的cp copy命令

带有bash大括号扩展的cp copy命令,bash,bash-completion,Bash,Bash Completion,在bash提示符下,我可以执行此复制 cp file.txt test1.txt 但是如果我尝试将file.txt复制到几个类似的文件中 cp file.txt test{2..4}.txt 我犯了一个错误 cp:目标“test4.txt”不是目录 这与bash无关,而是与cp有关。如果您为cp提供了两个以上的参数,那么最后一个参数应该是一个目录,所有其他参数都将复制到该目录 for f in test{2..4}.txt ; do cp file.txt $f ; done 好吧,你必须了

在bash提示符下,我可以执行此复制

cp file.txt test1.txt

但是如果我尝试将file.txt复制到几个类似的文件中

cp file.txt test{2..4}.txt
我犯了一个错误

cp:目标“test4.txt”不是目录


这与bash无关,而是与cp有关。如果您为cp提供了两个以上的参数,那么最后一个参数应该是一个目录,所有其他参数都将复制到该目录

for f in test{2..4}.txt ; do cp file.txt $f ; done

好吧,你必须了解*nix shell是如何工作的

在DOS/Windows世界中,通配符由程序处理。因此,例如,
xcopy*.txt*.bak
意味着
xcopy
被赋予两个参数:
*.txt
*.bak
。通配符的解释方式完全取决于
xcopy

在*nix世界中,通配符由shell处理。例如,类似的命令
xcopy*.txt*.bak
首先被扩展为
xcopy
。因此,假设存在
file1.txt
file4.txt
,再加上另一个文件
old.bak
,命令将扩展到
xcopy file1.txt file2.txt file3.txt file4.txt old.bak

对于
cp
命令,它正是Michael所写的:如果给
cp
的参数超过2个,那么最后一个参数必须是目录