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.