Làm thế nào để thay thế một liên kết tượng trưng bằng một bản sao của một tập tin mà nó liên kết đến?


15

Có một symlink (đơn, không cần xử lý hệ thống tập tin theo lô), một dòng lệnh sẽ sử dụng để thay thế nó bằng một bản sao của tập tin mà nó liên kết đến?

Câu trả lời:


16
cp --remove-destination "$(readlink <symlink>)" <symlink>

1
lỗi "-bash: lỗi cú pháp gần mã thông báo không mong muốn` newline '"khi được thực thi từ môi trường debian.
Lin Song Yang

Nếu <symlink>là một liên kết tượng trưng đến một đường dẫn tương đối, nó chỉ hoạt động nếu <symlink>trong thư mục hiện tại. Bạn có thể muốn sử dụng readlink -f. Hoặc nếu sử dụng zsh:cp --remove-destination path/to/symlink(:A) path/to/symlink
Stéphane Chazelas

0

Bạn có thể làm:

file=path/to/symlink
{ rm -f -- "$file" && cat > "$file"; } < "$file"

(chỉ sao chép nội dung, không phải siêu dữ liệu của tệp như quyền và quyền sở hữu).

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.