Vấn đề đầu tiên:
Trích dẫn bạn:
Sáng tạo và xóa hoạt động tốt. Nhưng cập nhật không hoạt động. Sau khi thực hiện lệnh này, symlink trở nên không hợp lệ.
Vấn đề với cấu trúc thư mục đã cho:
~ / scripts / test / ~ / scripts / test / remote_loc / ~ / scripts / test / remote_loc / site1 / ~ / scripts / test / remote_loc / site1 / Stuff1.txt ~ / scripts / test / remote_loc / site2 / ~ / scripts /test/remote_loc/site2/ ware2.txt ~ / scripts / test / remote_loc / site2 / ~ / scripts / test / remote_loc / site3 / Stuff3.txt
và sử dụng lệnh:
ln -s /remote_loc/site1 test_link
Có phải nó tạo ra một liên kết tượng trưng trong $ PWD của bạn, hoặc thư mục làm việc hiện tại, trỏ đến một tệp không tồn tại ngoài /, hoặc root, tại / remote_loc / site1
Nếu PWD của bạn ở ~ / scripts / thì bạn nên sử dụng cái này:
ln -s remote_loc/site1 test_link
khác bạn có thể đã sử dụng đường dẫn tuyệt đối đầy đủ như:
ln -s /home/yourusername/remote_loc/site1 test_link
Vấn đề thứ hai:
Trích dẫn bạn:
Tôi đã đọc ở đây và ở đó rằng không thể cập nhật / ghi đè một liên kết tượng trưng. Vì vậy, có thông tin mâu thuẫn trên mạng. Ai đúng? Nếu một liên kết tượng trưng có thể được cập nhật / ghi đè, làm thế nào tôi có thể đạt được điều này?
Để trả lời câu hỏi của bạn "Ai đúng", tôi không chắc chính xác những gì bạn đã đọc, hoặc nó được hiểu như thế nào. Nhưng, những điều sau đây sẽ giúp làm sáng tỏ:
- Những gì có thể được cập nhật, và
- Những gì không thể được cập nhật mà không sử dụng các công tắc thích hợp.
Cập nhật các liên kết tượng trưng với các mục tiêu không phải là thư mục.
ln -sf:
-f hoặc --force xóa các tệp đích hiện có, Cái này được sử dụng để cập nhật đích hoặc đích của liên kết.
Thí dụ:
ln -sf /tmp/test /tmp/test.link; ls -go /tmp |grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 9 Jun 8 17:27 test.link -> /tmp/test
Nhưng, như bạn có thể thấy, nó sẽ đưa ra đường dẫn tuyệt đối nếu các đường dẫn tuyệt đối nằm trong ln
các đối số. Đưa ra một đường dẫn đầy đủ là cần thiết khi thư mục làm việc hiện tại khác với thư mục mẹ của liên kết.
Đường dẫn tương đối:
ln -sfr:
-r hoặc --relative tạo các liên kết tượng trưng liên quan đến vị trí của liên kết.
Thí dụ:
ln -sfr /tmp/test /tmp/test.link ; ls -go /tmp| grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 4 Jun 8 17:27 test.link -> test
Nhưng, cập nhật một liên kết đến một thư mục sẽ không hoạt động nếu mục tiêu là một thư mục.
Thí dụ:
ln -sf /tmp/testdir /tmp/testdir.link ; ls -go /tmp |grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:47 testdir.link -> testdir
Như bạn có thể thấy, mặc dù sử dụng tên đường dẫn tuyệt đối được đưa ra trong ln
đối số ở trên mà không có tùy chọn -r, liên kết tượng trưng vẫn liên quan đến liên kết.
Cập nhật Liên kết đến Thư mục:
ln -sfrn:
-n hoặc --no-dereference coi LINK_NAME là một tệp bình thường nếu đó là một liên kết tượng trưng đến một thư mục.
Thí dụ:
ln -sfn /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 12 Jun 8 17:48 testdir.link -> /tmp/testdir
Ngược lại với:
ln -sfnr /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:48 testdir.link -> testdir
unlink
thay vìrm
. Vớiunlink
bạn không bao giờ có nguy cơ mất bất kỳ tập tin trong một thư mục nguồn bằng cách vô tình sử dụng các công tắc sai.