Làm cách nào để thay đổi liên kết tượng trưng trong OS X?


20

Làm cách nào để thay đổi vị trí của một liên kết tượng trưng, ​​mà không xóa và tạo một liên kết mới (với ln -s "/path/to/point/to" "/path/where/symlink/is")?

Khi tôi thử làm điều đó với liên kết tượng trưng "Hiện tại" của Java, Java thậm chí sẽ không hoạt động (ít nhất là từ dòng lệnh, đã nói 'Lỗi phân đoạn') nhưng nó đã trở lại bình thường khi tôi khôi phục liên kết tượng trưng "Hiện tại" cũ với Thời gian Máy (nhưng sau đó tôi phát hiện ra mình vẫn nên sử dụng /Applications/Utilities/Java Preferences.appđể thay đổi phiên bản java hiện tại).

Câu trả lời:


8
mkdir /path/where/newsymlink
ln -s /path/to/point/to /path/where/newsymlink/is
mv /path/where/newsymlink/is /path/where/symlink/
rmdir /path/where/newsymlink

Tuy nhiên, tiện ích Java Preferences thay đổi nhiều hơn chỉ là một liên kết tượng trưng; bạn nên sử dụng điều đó để đảm bảo rằng phiên bản Java đã được thay đổi.


lệnh mv sẽ chỉ đổi tên nó chứ ..?
mk12

.. Tôi đã thử điều đó, nó di chuyển symlink mới vào thư mục mà cái cũ trỏ tới.
mk12

Lệnh đầu tiên tạo liên kết tượng trưng chỉ nơi bạn muốn và lệnh thứ hai thay thế con trỏ hiện tại đến vị trí cũ bằng con trỏ đến vị trí mới. Mv là nguyên tử nên liên kết tượng trưng sẽ luôn tồn tại.
mark4o

.. Nhưng nó vẫn không hoạt động .. nó di chuyển con trỏ mới vào thư mục mà con trỏ cũ trỏ tới.
mk12

/path/where/symlink/islà liên kết tượng trưng mà bạn đang thay đổi. Sử dụng các lệnh này sẽ thay đổi nó để trỏ đến /path/to/point/to. Thư mục mà symlink gốc trỏ đến hoàn toàn không được chạm vào.
mark4o

28
ln -hfs newlocation existinglink

hoặc là

ln -nfs newlocation existinglink

sẽ thay đổi liên kết hiện có để trỏ đến vị trí mới

(-n và -h giống hệt nhau trong hoạt động)

Từ 'người đàn ông ln'

-h Nếu target_file hoặc target_dir là một liên kết tượng trưng, ​​đừng theo nó. Điều này hữu ích nhất với tùy chọn -f, để thay thế một liên kết tượng trưng có thể trỏ đến một thư mục.

-f Nếu tệp mục tiêu đã tồn tại, sau đó hủy liên kết nó để liên kết có thể xảy ra. (Tùy chọn -f ghi đè mọi tùy chọn -i trước đó.)

-s Creae một liên kết tượng trưng


Các -nfsphiên bản cũng hoạt động trên Linux, vì vậy nó là di động nhiều hơn nếu quan tâm bất cứ ai.
Cromax

10

Thử:

unlink /path/to/current/link
ln -s /path/to/target /path/to/symbolic/link

1
Trên MacBook Pro 2013 cuối cùng với Mavericks, tôi đã phải chuyển đổi hai tham số: ln -s / path / sang /
Symbolic

1

Lệnh ln không cho phép bạn thay đổi liên kết, chỉ tạo liên kết mới.


0

Bạn đã so sánh các quyền trên các liên kết và trên các mục tiêu trước và sau khi bạn thay đổi liên kết chưa? Bạn có thể chỉ cần theo dõi với các lệnh chown và chmod thích hợp để làm cho nó hoạt động.


Chà, tôi thậm chí không biết làm thế nào để thay đổi nó. Và tôi không biết chown và chmod làm gì.
mk12

2
chown thay đổi quyền sở hữu của một tập tin và / hoặc thư mục. chmod thay đổi quyền của một tập tin và / hoặc thư mục. Đây là tiêu chuẩn chỉ trong mỗi nền tảng unix. Quá nhiều chi tiết để giải thích từng vấn đề ở đây, vì vậy tôi muốn giới thiệu từng người cho hướng dẫn. Bạn cũng có thể thực hiện "man chown" hoặc "man chmod" để đọc hướng dẫn thực tế của lệnh (nhấn q để thoát khỏi hướng dẫn).
churnd
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.