强制cp复制悬空的符号链接


15

有什么办法cp(Bash 4.2.5,Ubuntu 12.04)强制复制到悬空的符号链接上?

cp a-file path/to/danling/symlink/a-file
cp: not writing through dangling symlink `path/to/danling/symlink/a-file`

cp -f 在这种情况下似乎无能为力,并且会产生相同的消息。


您尝试cp -f改用吗?
Rohith Madhavan 2014年

@RohithMadhavan是的; 相同的消息(我刚刚更新了问题)
Marcus Junius Brutus

Answers:


21

cp复制之前删除目标文件:

$ ln -s /random/file f              
$ cp -f a f                  
cp: not writing through dangling symlink ‘f’
$ cp --remove-destination a f
$ diff a f && echo yes
yes

来自man cp

--remove-destination
      remove  each existing destination file before attempting to open
      it (contrast with --force)

2

只需使用实际的符号链接unlink theSymLink在哪里theSymLink,然后重试


3
这将起作用,但是请注意,unlink与更常用的效果相同(因此没有优势)rm。特别是,就像一样rm foo,即使它是常规文件而不是符号链接,unlink foo也将删除该文件foo。使用unlink代替rm(或mv --remove-destination ...不能防止意外的数据丢失。
Eliah Kagan 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.