Jak mogę utworzyć dowiązanie symboliczne w Terminalu?


Odpowiedzi:


542
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

Więcej informacji na temat ln (1) znajduje się na stronie man .

Ścieżka do dowiązania symbolicznego jest opcjonalna; jeśli pominięty, lndomyślnie czyni związek z tą samą nazwą co do miejsca przeznaczenia, w aktualnym katalogu:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

Aby utworzyć dowiązanie symboliczne w celu zastąpienia katalogu systemowego (np. Jeśli chcesz /Userswskazywać inny dysk), musisz wyłączyć ochronę integralności systemu . Możesz go ponownie włączyć po skonfigurowaniu dowiązania symbolicznego.


63
Gdyby tylko strony podręcznika były tak jasne, jak twoja odpowiedź!
Adrian Lynch

pozwolenie odrzucone: S czy możesz dać mi wskazówkę? próbuje utworzyć dowiązanie symboliczne dla użytkowników, aby móc go używać na innym dysku twardym, a ssd ma właśnie dowiązanie symboliczne. dzięki
Ewoks

2
@patrix Zredagowałem moją odpowiedź, aby wyjaśnić; edytuj dalej.
grg

4
Ciekawostka: oryginał nie musi istnieć. Polecenie ln -s "This directory is no longer in use" READMEbyłoby całkowicie uzasadnione, a wtedy każdy wykonujący ls -lzobaczyłby wiadomość.
Edward Falk

1
Do wykorzystania w przyszłości: Nie musisz się przenosić / Użytkownicy na macOS, aby zaoszczędzić miejsce. Możesz zmienić ścieżki katalogu domowego użytkowników indywidualnie w Preferencjach systemowych w części Użytkownicy i grupy, klikając prawym przyciskiem myszy wpisy listy użytkowników.
Peter W.

73

Komenda nazywa się ln. Jeśli zostanie użyty z opcją -s, utworzy dowiązanie symboliczne w bieżącym katalogu:

ln -s /any/file/on/the/disk linked-file

1
Czy plik połączony musi istnieć jako pierwszy? Otrzymuję błąd nie znaleziono pliku docelowego.
AlxVallejo

2
Plik nie (pojawia się komunikat o błędzie, jeśli tak się dzieje), ale wszystkie katalogi w dowolnej ścieżce. Jeśli utkniesz, możesz zadać nowe pytanie za pomocą przycisku Zadaj pytanie w prawym górnym rogu. Dodaj link do tego pytania, aby podać kontekst.
nohillside

Łącze symboliczne nie powinno istnieć przed uruchomieniem tego polecenia. Ale o ile wiem, wymagana jest ważna ścieżka. Jeśli folder pliku wyjściowego nie istnieje przed uruchomieniem tego polecenia, również pojawi się No such file or directorybłąd.
Deniz Kaplan,

34

Wiem, że to pytanie wyraźnie dotyczy terminalu, ale jeśli jesteś w GUI Land i nie chcesz wchodzić do Terminal Land, możesz użyć SymbolicLinker . Spowoduje to umieszczenie opcji „Utwórz symboliczne łącze” w menu Usługi w Finderze.

Menu kontekstowe folderu, pokazujące podmenu „Usługi” z podświetlonym „Make Symbolic Link”

Menu kontekstowe dla dowiązania symbolicznego z podświetlonym „Make Symbolic Link”


3
Chciałbym wiedzieć, dlaczego zostało to zanegowane, więc mogę teraz udzielać odpowiedzi wyższej jakości :)
Ben Leggiero

10
prawdopodobnie dlatego, że pytanie brzmiało: „Jak mogę utworzyć łącze symboliczne w terminalu?” Ale nie oddaję cię na głos :)
vedrano

1
@EdwardFalk Myślę, że w El Capitan możesz przytrzymać Command+ Optionpodczas przeciągania pliku ... zaktualizuje odpowiedź później
Ben Leggiero

1
@BenLeggiero To tworzy alias.
Andy Stewart

2
@BenLeggerio, różnica została wyjaśniona tutaj: apple.stackexchange.com/questions/2991/…
MiB


5

ln -s /some/dir/ ~/Desktop/dir

Możesz także utworzyć dowiązanie symboliczne do katalogu za pomocą tego samego polecenia

ln -s "$(pwd)" ~/Desktop/dir

Aby utworzyć dowiązanie symboliczne do bieżącego katalogu, w którym jesteś.


2
Prosta .(kropka) da pwd. Nie potrzeba żadnych wymyślnych argumentów :)
mylogon,

@mylogon hahaha czasami lubię się zastanawiać. uprościła moją odpowiedź!
Gerald

@mylogon Właśnie zdałem sobie sprawę, że .nie działa na macOS. nie próbowałem jeszcze na Linuksie. użycie ./skutkowało tym, foo -> ./fooco wskazuje na siebie.
Gerald

Jakie jest pełne polecenie, które wpisałeś?
mylogon,
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.