Không thể thay đổi đích của liên kết tượng trưng


21

Tôi muốn thay đổi đích của một liên kết tượng trưng hiện có, mà không xóa liên kết hoặc đích cũ.

Trước đây tôi đã tạo một liên kết tượng trưng đến một thư mục như sau:

$ cd /usr/lib/jvm/

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07

$ sudo ln -s jdk1.7.0_04 oracle-jdk-7

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

Bây giờ tôi muốn thay đổi điều này, để liên kết đến thư mục khác:

$ sudo ln --force -s jdk1.7.0_07 oracle-jdk-7

Nhưng nó không hoạt động mà không có bất kỳ lỗi nào:

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:36  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

Có ai giúp đỡ không?


Có thể đây là một chi tiết nhỏ, nhưng có vẻ như lệnh thực tế bạn đã chạy sudo ln -s jdk1.7.0_04/ oracle-jdk-7. Lưu ý dấu gạch chéo sau 04.
wjandrea

Câu trả lời:


31

Để tạo liên kết tượng trưng đến thư mục , hãy sử dụng tùy chọn 'n':

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY là tên của mục tiêu liên kết;
  • LINK_NAME là tên của liên kết.
  • Các ftùy chọn có nghĩa là để thay thế các liên kết hiện có (ví dụ, hãy xóa nó đầu tiên).

Các ntùy chọn là một chút phức tạp. Tôi tin rằng lệnh của bạn có thể đã tạo một liên kết đến jdk1.7.0_07bên trong thư mục jdk1.7.0_04, thông qua liên kết oracle-jdk-7thay vì thay thế liên kết. Nếu vậy, bạn nên xóa liên kết để tránh nhầm lẫn.


Bạn cũng có thể sử dụng tùy chọn T, tức làln -sfT TARGET LINK_NAME
wjandrea
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.