之间有什么区别:
cp -R /a/* /b
和
cp -R /a/. /b
最初的想法是将文件夹 /a 中的所有内容复制到文件夹 /b 中。
答案1
唯一的区别是第一个命令,
cp -R /a/. /b
会将隐藏文件和目录从/a
to复制/b
,而第二个命令,
cp -R /a/* /b
不会这样做。
第二个命令不复制隐藏文件的原因是 扩展*
为 中的所有非隐藏名称(除非在 中设置了/a
shell 选项,或者在使用的任何 shell 中设置了等效选项(如果可用))。dotglob
bash
-r
第二个命令中使用的原始问题而不是-R
:
为了向后兼容,该标志-r
保留在某些实现cp
(cp
例如 GNU)中。它是命令的非标准标志cp
,并且在拥有它的实现上,它是相似的到-R
。
在GNU 和AIX 中cp
,-r
和-R
是相同的。在 的一些历史实现中cp
,它以不同的方式处理特殊文件,例如 FIFO 和套接字。 Solaris 的实现cp -r/-R
仅对于 FIFO 有所不同(-R
重新创建它们,-r
从中读取)。没有一个免费的 BSD 有-r
其cp
实现。
答案2
cp -R
递归复制并复制原始文件类型。这是 POSIX 标准中唯一提到的递归方法。
cp -r
是递归复制的历史选项。它打开所有文件并读取内容,然后使用读取的内容创建纯文件。这是历史悠久的 UNIX 递归选项。它在现代实现中可能不可用。
看http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.htmlPOSIX 手册页。