buộc cp phải sao chép trên các liên kết tượng trưng


15

Có cách nào để buộc cp(Bash 4.2.5, Ubuntu 12.04) sao chép vào một liên kết tượng trưng không?

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

cp -f dường như là bất lực trong trường hợp này và kết quả trong cùng một thông điệp.


Bạn đã thử sử dụng cp -fthay thế?
Rohith Madhavan

@RohithMadhavan yep; cùng một tin nhắn (tôi vừa cập nhật câu hỏi)
Marcus Junius Brutus

Câu trả lời:


21

Hãy cpxóa tệp đích trước khi sao chép:

$ 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

Từ man cp:

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

2

Chỉ cần sử dụng unlink theSymLinkđâu theSymLinklà symlink thực tế, sau đó thử lại


3
Điều này sẽ hoạt động, nhưng lưu ý rằng unlinkcó tác dụng tương tự (và do đó không có lợi thế so với) được sử dụng phổ biến hơn rm. Cụ thể, như rm foo, unlink foosẽ xóa một tệp foongay cả khi đó là một tệp thông thường và không phải là một liên kết tượng trưng. Sử dụng unlinkthay vì rm(hoặc mv --remove-destination ...) không bảo vệ chống mất dữ liệu do tai nạn.
Eliah Kagan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.