Jak zmienić dowiązanie symboliczne w OS X?


21

Jak zmienić miejsce, do którego prowadzi dowiązanie symboliczne, bez usuwania i tworzenia nowego (z ln -s "/path/to/point/to" "/path/where/symlink/is")?

Kiedy próbowałem zrobić to z dowiązaniem symbolicznym „Current” Javy, Java nawet nie działała (przynajmniej z wiersza poleceń powiedział „Błąd segmentacji”), ale wróciłem do normalnego stanu po przywróceniu starego dowiązania symbolicznego „Current” z czasem Maszyna (ale później dowiedziałem się, że i /Applications/Utilities/Java Preferences.apptak powinienem użyć, aby zmienić obecną wersję Java).

Odpowiedzi:


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

Jednak narzędzie Preferencje Java zmienia więcej niż tylko łącze symboliczne; powinieneś tego użyć, aby upewnić się, że wersja Java została zmieniona.


czy komenda mv po prostu nie zmieni nazwy?
— mk12

.. Próbowałem tego, po prostu przenosi nowe dowiązanie symboliczne do folderu, na który wskazuje stary.
— mk12

Pierwsze polecenie tworzy dowiązanie symboliczne wskazujące, gdzie chcesz, a drugie polecenie zastępuje istniejący wskaźnik do starego miejsca wskaźnikiem do nowego miejsca. Mv jest atomowy, więc dowiązanie symboliczne zawsze będzie istnieć.
— mark4o

.. Ale nadal nie działa .. przenosi nowy wskaźnik do folderu, na który wskazuje stary.
— mk12

/path/where/symlink/isto dowiązanie symboliczne, które zmieniasz. Użycie tych poleceń spowoduje zmianę na wskazanie /path/to/point/to. Folder wskazywany przez oryginalne dowiązanie symboliczne w ogóle nie jest dotykany.
— mark4o

30
ln -hfs newlocation existinglink

lub

ln -nfs newlocation existinglink

zmieni istniejący link, aby wskazywał na nową lokalizację

(-n i -h działają identycznie)

Od „man ln”

-h Jeśli plik_docelowy lub katalog_docelowy jest dowiązaniem symbolicznym, nie podążaj za nim. Jest to najbardziej przydatne z opcją -f, aby zastąpić dowiązanie symboliczne, które może wskazywać na katalog.

-f Jeśli plik docelowy już istnieje, odłącz go, aby mogło nastąpić łącze. (Opcja -f przesłania wszelkie wcześniejsze opcje -i.)

-s Creae dowiązanie symboliczne


-nfsWersja działa również na Linuksie, więc jest bardziej mobilny, czy ktoś obchodzi.
— Cromax,

10

Próbować:

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

1
Na moim MacBooku Pro z końca 2013 roku z Mavericks musiałem zmienić dwa parametry: ln -s / path / to / symbolic / link / path / to / target
— Marius Waldal

1

Polecenie ln nie pozwala zmieniać łączy, a jedynie tworzyć nowe.


0

Czy porównałeś uprawnienia do linków i celów przed i po zmianie linku? Być może trzeba będzie wykonać odpowiednie polecenia chown i chmod, aby działało.


Cóż, nawet nie wiem jak to zmienić, więc nie. I nie wiem, co robią chown i chmod.
— mk12

2
chown zmienia własność pliku i / lub katalogu. chmod zmienia uprawnienia do pliku i / lub katalogu. Są one standardowe w prawie każdej platformie Unix. Za dużo szczegółów, by je wyjaśnić tutaj, dlatego polecam przeglądanie każdego z nich w samouczkach. Możesz także zrobić „man chown” lub „man chmod”, aby przeczytać aktualną instrukcję polecenia (naciśnij q, aby wyjść z instrukcji).
— churnd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.