你能告诉 cp (GNU coreutils) 防止报告以下错误:
$ echo 1 > foo
$ cp foo foo
目前,该报道称:
cp: 'foo' and 'foo' are the same file
这是非常明智的,但并不一定总是错误。从概念上讲,如果您正在从$source
to复制文件$dest
,如果您已经在该$dest
目录中,那么本质上复制已经通过构造完成了;所以,取决于上下文,这不一定会报告为错误。我在手册页中找不到任何相关内容。该--update
选项不起作用,尽管听起来可能有效。
显然,我可以通过多种方式解决这个问题,但我想知道 cp 是否可以立即做到这一点。
答案1
这对于 GNU coreutils 来说是不可能的(从 coreutils 8.27 开始)。文档中没有提到这一点,并且源代码没有显示任何未记录的方式。仅在进行硬链接或文件是指向同一目标的符号链接的某些情况下才允许进行相同文件性测试。
Rsync 允许这样做,因此一个简单的解决方案是使用rsync
而不是cp
.