包含通配符的单个参数的cp [duplicate]

Modified on: Sat, 30 Jun 2018 05:21:00 +0800
    

这个问题已经有了答案:

    

    

如果我有以下2个文件和1个文件夹:

someuser@computer:~/Desktop/test$ ls -l
total 340
-rw-r--r-- 1 someuser someuser  45082 ago  5 09:56 file1.pdf
-rw-r--r-- 1 someuser someuser 291836 ago  5 09:56 file2.pdf
drwxrwxr-x 2 someuser someuser   4096 ago  5 09:56 this_is_a_folder.pdf

我运行以下命令(注意我省略了目的地):

cp *.pdf

file1.pdffile2.pdf复制到this_is_a_folder.pdf文件夹中。

someuser@computer00:~/Desktop/test$ ls this_is_a_folder.pdf/
file1.pdf  file2.pdf

显然*.pdf正在扩展为匹配项,所以它相当于

cp file1.pdf file2.pdf this_is_a_folder.pdf

...并且this_is_a_folder.pdf是一个文件夹,然后将两个文件复制到它。

这是一个错误吗?

这显然是通配符扩展的副作用,并不是我期望发生的。

我原本希望missing destination file 错误

最佳答案

这不是cp命令中的错误。当您输入cp *.pdf时,cp永远不会看到实际的通配符,因为通配符是由bash扩展的,而不是cp 的。 cp如何知道您只输入了一个参数? 这是bash通配符的副作用,不能称为bug。

作者:,Kartik

相关问答

添加新评论