Làm thế nào để sửa một liên kết tượng trưng chỉ đến một vị trí sai?


3

Tôi có một chút bối rối với các liên kết cứng / mềm ở đây. Tôi đang dùng OSX, có thư mục '4' và hai liên kết trỏ đến nó:

drwxr-xr-x  4 imm  staff  136 14 Jun 21:24 4
lrwxr-xr-x  1 imm  staff    1 14 Jun 16:56 4.0 -> 4
lrwxr-xr-x  1 507  wheel    1 14 Jun 16:56 Current -> 4

Khi tôi theo dõi 'Hiện tại' trong thư mục, nó dẫn đến một vị trí hoàn toàn khác (đường dẫn tôi đã sao chép tất cả nội dung từ đó). Tôi muốn 'Hiện tại' để trỏ vào thư mục '4' tại vị trí mới.

Làm thế nào tôi có thể đạt được điều này?

Câu trả lời:


10

Bạn cần phải loại bỏ và tạo lại liên kết. Bạn có thể làm điều này với

rm Current

Và sau đó tạo lại nó:

ln -s /path/to/the/new/location Current

Bạn có thể sử dụng một đường dẫn tuyệt đối (để đơn giản).

Nếu bạn muốn đường dẫn di chuyển khi bạn di chuyển liên kết, thì bạn có thể sử dụng một đường dẫn tương đối. Hãy nhớ rằng nó lưu trữ đường dẫn tương đối và chỉ giải quyết nó từ vị trí hiện tại của liên kết khi bạn cố gắng truy cập nó.

Chỉnh sửa: vì bạn đề cập đến các liên kết cứng, tôi sẽ tiếp tục và giới thiệu chúng ở đây.

Một liên kết cứng tương tự như một liên kết tượng trưng, ​​ở chỗ nó vẫn trỏ đến một tệp, nhưng nó bị giới hạn trong hệ thống tệp hiện tại, nhưng cũng nhanh hơn. Một liên kết cứng trỏ đến một nút cụ thể trên đĩa, thay vì một vị trí khác trong hệ thống tệp. Bạn không thể có liên kết cứng tương đối.

Bạn có thể coi hệ thống tệp cơ bản là tập hợp các liên kết cứng đến các vị trí trên đĩa, mỗi tệp trên một tệp. Tạo các liên kết cứng bổ sung chỉ tạo các con trỏ bổ sung vào cùng một tệp. Chúng nhanh hơn đáng kể vì hệ thống biết chính xác vị trí của tệp mà nó cần (một liên kết tượng trưng phải được giải quyết, và sau đó tệp mới phải được tra cứu và giải quyết), nhưng vì điều này chỉ giới hạn ở các nút trên hệ thống tập tin hiện tại.

Hệ thống tập tin tự động theo dõi số lượng liên kết cứng trỏ đến một nút cụ thể và chỉ cần xóa nút đó khi số đó đạt 0.


Tôi có thể sử dụng một đường dẫn tương đối không?
Hedge

2
Bạn có thể, mặc dù nó có phần thú vị. Đường dẫn tương đối được lưu trữ, vì vậy bạn phải chú ý nếu bạn di chuyển liên kết (giả sử, bằng cách di chuyển thư mục mẹ). Nó sẽ chỉ liên quan đến vị trí mới của nó và sẽ không cập nhật để tiếp tục trỏ đến cùng một vị trí trước đó. Đây có thể là những gì bạn muốn, hoặc có thể không, nhưng tôi biết lúc đầu nó làm tôi bối rối vì tôi không nhận ra nó thực sự lưu trữ đường dẫn tương đối, tôi nghĩ rằng nó chỉ giải quyết nó thành một đường dẫn tuyệt đối và lưu trữ nó.
Darth Android

Đó chính xác là những gì tôi muốn :)
Hedge

Đã chuyển thông tin đó vào bài đăng, vì đó thực sự là những gì bạn đang theo dõi.
Darth Android

1
Thật là sự xấu hổ. Miễn là nó rõ ràng, nó sẽ nhận được phản hồi tốt.
Darth Android

7

Bạn chỉ có thể làm điều này:

ln -nfs /path/to/the/new/location Current

trong đó 'Hiện tại' là liên kết tượng trưng hiện tại. Các tùy chọn -n và -f hủy liên kết và xóa 'Hiện tại' ban đầu và cho phép tạo một tùy chọn mới (-s cho liên kết mềm).

Tôi nhận ra rằng câu hỏi đã được trả lời và vấn đề ban đầu đã được giải quyết từ lâu, nhưng quá trình lặp lại một liên kết tượng trưng mà không qua bước xóa riêng biệt đã làm phiền tôi một lần nữa và một tìm kiếm của Google về giải pháp đã đưa ra câu hỏi này . Hy vọng nó sẽ giúp người khác tìm kiếm câu trả lời!


Tôi đã tìm thấy bởi kinh nghiệm đau đớn rằng việc hủy liên kết và xóa không hoàn toàn đáng tin cậy và thực hiện rm riêng biệt là đáng tin cậy hơn, nếu hơi dài dòng.
Kevin Teljeur
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.