Wie kann ich im Terminal einen symbolischen Link erstellen?

351

Welcher Befehl wird verwendet, um eine symbolische Verknüpfung / eine weiche Verknüpfung zu erstellen?

Patrick
quelle

Antworten:

543
┌── 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

Weitere Informationen zu ln (1) finden Sie in der Manpage .

Der Pfad zum Symlink ist optional. Wenn dies nicht angegeben wird, wird lnstandardmäßig eine Verknüpfung mit demselben Namen wie das Ziel im aktuellen Verzeichnis erstellt:

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

Um einen Symlink zum Ersetzen eines Systemverzeichnisses zu erstellen (z. B. wenn Sie /Usersauf ein anderes Laufwerk verweisen möchten ), müssen Sie den Systemintegritätsschutz deaktivieren . Sie können es wieder aktivieren, nachdem der Symlink eingerichtet wurde.

grg
quelle
63
Wenn nur Manpages so klar wären wie Ihre Antwort!
Adrian Lynch
Erlaubnis verweigert: S Kannst du mir einen Hinweis geben? versuche symlink für Benutzer zu erstellen, damit ich es auf einer anderen Festplatte verwenden kann und ssd nur symlink hat. Danke
Ewoks
2
@Patrix Ich habe meine Antwort bearbeitet, um zu klären; Fühlen Sie sich frei, weiter zu bearbeiten.
grg
4
Lustige Tatsache: Original muss eigentlich nicht existieren. Der Befehl ln -s "This directory is no longer in use" READMEwäre absolut legitim, und dann würde jeder, der ihn ausführt ls -l, die Nachricht sehen.
Edward Falk
1
Zum späteren Nachschlagen: Sie müssen / Users unter macOS nicht verschieben, um Speicherplatz zu sparen. Sie können die Heimatverzeichnispfade der Benutzer in den Systemeinstellungen unter Benutzer und Gruppen individuell ändern, indem Sie mit der rechten Maustaste auf die Benutzerlisteneinträge klicken.
Peter W.
73

Der Befehl wird aufgerufen ln. Bei Verwendung mit dieser Option -swird eine symbolische Verknüpfung im aktuellen Verzeichnis erstellt:

ln -s /any/file/on/the/disk linked-file
Nohillside
quelle
1
Muss die verlinkte Datei zuerst existieren? Ich erhalte eine Fehlermeldung, dass die Datei auf dem Ziel nicht gefunden wurde.
AlxVallejo
2
Die Datei nicht (Sie erhalten eine Fehlermeldung, wenn dies der Fall ist), sondern alle Verzeichnisse in einem beliebigen Pfad. Wenn Sie nicht weiterkommen, können Sie über die Schaltfläche Frage stellen oben rechts eine neue Frage stellen. Fügen Sie einen Link zu dieser Frage hinzu, um den Kontext bereitzustellen.
Nohillside
Eine symbolische Verknüpfung sollte nicht vorhanden sein, bevor Sie diesen Befehl ausführen. Nach meinem Kenntnisstand ist jedoch ein gültiger Pfad erforderlich. Wenn der Ordner der Ausgabedatei nicht vorhanden ist, bevor Sie diesen Befehl ausführen, wird ebenfalls eine No such file or directoryFehlermeldung angezeigt.
Deniz Kaplan
34

Ich weiß, dass diese Frage ausdrücklich das Terminal betrifft, aber wenn Sie sich in GUI Land befinden und Terminal Land nicht betreten möchten, können Sie SymbolicLinker verwenden . Dadurch wird im Finder im Menü "Dienste" die Option "Symbolischen Link erstellen" angezeigt.

Ein Kontextmenü für einen Ordner mit einem Untermenü "Dienste", in dem "Symbolische Verknüpfung erstellen" markiert ist

Ein Kontextmenü für einen symbolischen Link, wobei "Symbolischen Link erstellen" markiert ist

Ben Leggiero
quelle
3
Ich würde gerne wissen, warum dies abgelehnt wurde, damit ich von nun an qualitativ hochwertigere Antworten geben kann :)
Ben Leggiero
10
wahrscheinlich, weil die Frage lautete: "Wie kann ich im Terminal eine symbolische Verknüpfung erstellen?" Aber ich stimme dich nicht ab :)
vedrano
1
@EdwardFalk Ich denke, in El Capitan können Sie beim Ziehen einer Datei Command+ gedrückt halten Option... die Antwort wird später aktualisiert
Ben Leggiero
1
@BenLeggiero Das macht einen Alias.
Andy Stewart
2
@BenLeggerio, Der Unterschied wird hier erklärt: apple.stackexchange.com/questions/2991/…
MiB
28

Es ist nur so ln -s <source> <destination>.

TheSqrtMinus1
quelle
5

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

Mit demselben Befehl können Sie auch einen Symlink für das Verzeichnis erstellen

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

So erstellen Sie einen Symlink zum aktuellen Verzeichnis, in dem Sie sich befinden.

Gerald
quelle
2
Ein einfacher .Punkt gibt die pwd an. Keine ausgefallenen Argumente erforderlich :)
Mylogon
@mylogon hahaha ich mag es manchmal zu überdenken. vereinfacht meine Antwort!
Gerald
@ MyLogon Ich habe gerade festgestellt, dass das nicht unter .MacOS funktioniert. habe Linux noch nicht ausprobiert. Verwendung ./führte dazu, foo -> ./foowas auf sich selbst verweist.
Gerald
Was ist der vollständige Befehl, den Sie eingegeben haben?
Mylogon