所以我有一个符号链接 sd/common.py -> actual_file
我想用生成的文件替换符号链接,但是当我这样做时:
cp /tmp/Star_Wrangler/common.py sd/common.py
它从 common.py 复制并删除 actual_file 而不是像我想要的那样只是复制符号链接。每次我忘记在复制之前删除符号链接时,这种情况都会发生。
是否有获得正确行为的标志?我查看手册页,但他们都在谈论源代码而不是目标文件的符号链接。
Kus*_*nda 17
这取决于您使用的是什么 Unix。
在某些 BSD 系统(OpenBSD、FreeBSD)上,您会发现它cp -f
会取消链接(删除)符号链接并将其替换为源代码。
使用 GNU cp
,这不会产生相同的效果,您需要改用 long 选项--remove-destination
。
在 macOS 上,使用cp -c
to,正如手册所说,“使用clonefile(2)
”复制文件。
在 NetBSD 上,使用cp -a
("archive mode",与cp -RpP
在该系统上相同)。这在 GNU、macOS、OpenBSD 或 FreeBSD 上不起作用,即使所有这些系统都具有相同或相似的-a
选项cp
(在 GNU 系统上,它与 相同-dR --preserve
)。
您自己已经提到了这一点:在复制文件之前删除链接将解决问题。该rm
实用程序将删除链接而不是链接引用的文件。这也是用常规文件替换符号链接的最便携方式。
如果您正在编写脚本,那么我建议您使用rm
后跟cp
.
如果您以交互方式工作并一直忘记这样做,那么您也可能忘记在cp
这些情况下使用特定选项。
归档时间: |
|
查看次数: |
587 次 |
最近记录: |