Wie kann ich in Terminal einen symbolischen Link erstellen?

Welcher Befehl wird verwendet, um einen symbolischen Link/Softlink zu erstellen?

Antworten (7)

┌── 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 auf der Manpage .

Der Pfad zum Symlink ist optional; Wenn weggelassen, wird lnstandardmäßig ein Link 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 symbolischen Link zu erstellen, um ein Systemverzeichnis zu ersetzen (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.

Wenn nur Manpages so klar wären wie Ihre Antwort!
Erlaubnis verweigert :S kannst du mir einen Tipp geben? Ich versuche, einen Symlink für Benutzer zu erstellen, damit ich ihn auf einer anderen Festplatte verwenden kann, und SSD hat nur einen Symlink. Vielen Dank
@Ewoks /Users ist durch SIP geschützt. Sie können den Systemintegritätsschutz deaktivieren , um den Symlink einzurichten (und ihn danach wieder aktivieren, wenn Sie möchten). Ich habe dies der Antwort hinzugefügt.
Sie müssen SIP nicht deaktivieren, um SIP-geschützte Ordner/Dateien zu symbolisieren, ln -s /Users /Users/myuser/all-usersfunktioniert z. B. perfekt. Sie müssen SIP nur deaktivieren, wenn Sie den Symlink in einem SIP-geschützten Ordner erstellen möchten (wie Sie es tun würden, wenn Sie dort einen anderen Verzeichniseintrag erstellen möchten).
@patrix Ich habe den Kommentar so interpretiert, dass ich /Users durch einen Symlink ersetzen wollte, anstatt einen Symlink zu erstellen, der auf /Users zeigt – war das nicht beabsichtigt?
@grgarside So verstehe ich auch Ewoks. Aber so lese ich Ihre Bearbeitung der Antwort nicht.
@patrix Ich habe meine Antwort bearbeitet, um sie zu verdeutlichen. Fühlen Sie sich frei, weiter zu bearbeiten.
Fun Fact: Original muss nicht unbedingt existieren. Der Befehl ln -s "This directory is no longer in use" READMEwäre vollkommen legitim, und dann ls -lwürde jeder Ausführende die Nachricht sehen.
Zum späteren Nachschlagen: Sie müssen /Users unter macOS nicht verschieben, um Platz zu sparen. Sie können die Home-Verzeichnispfade der Benutzer in den Systemeinstellungen unter Benutzer & Gruppen individuell ändern, indem Sie mit der rechten Maustaste auf die Einträge in der Benutzerliste klicken.
Ich habe immer kaputte Symlinks erstellt, während ich es versuchte ln -s ./original/source/ ../path/to/symlink, also hat der .Operator die Dinge für mich wirklich durcheinander gebracht, indem er den gesamten Pfad mit ~repariert hat.
@caramba Ich habe es nie versucht ./original/source/; Ich würde verwenden original/source.
Du bist ein Zauberer

Der Befehl heißt ln. Bei Verwendung mit der Option -swird ein symbolischer Link im aktuellen Verzeichnis erstellt:

ln -s /any/file/on/the/disk linked-file
Muss die verlinkte Datei zuerst existieren? Ich erhalte einen Fehler „Datei nicht gefunden“ auf dem Ziel.
Die Datei nicht (Sie erhalten eine Fehlermeldung, wenn dies der Fall ist), aber alle Verzeichnisse in einem beliebigen Pfad. Wenn Sie nicht weiterkommen, können Sie gerne eine neue Frage stellen, indem Sie oben rechts auf die Schaltfläche „Frage stellen“ klicken. Fügen Sie einen Link zu dieser Frage hinzu, um den Kontext bereitzustellen.
Der symbolische Link sollte nicht vorhanden sein, bevor Sie diesen Befehl ausführen. Soweit ich weiß, ist jedoch ein gültiger Pfad erforderlich. Wenn der Ordner der Ausgabedatei nicht vorhanden ist, bevor Sie diesen Befehl ausführen, erhalten Sie ebenfalls eine No such file or directoryFehlermeldung.
@AlxVallejo Ich habe immer wieder den gleichen Fehler bekommen, der durch einen dummen Fehler verursacht wurde, ich habe ls(aus Gewohnheit) anstelle von ln! (überprüfen Sie das unbedingt)

Ich weiß, dass diese Frage explizit nach dem Terminal fragt, aber wenn Sie sich im GUI Land befinden und Terminal Land nicht betreten möchten, können Sie SymbolicLinker verwenden . Dadurch wird eine Option "Symbolischen Link erstellen" in Ihrem Menü "Dienste" im Finder eingefügt.

Ein Kontextmenü für einen Ordner mit einem Untermenü „Dienste“, in dem „Symbolischen Link erstellen“ hervorgehoben ist

Ein Kontextmenü für einen symbolischen Link, wobei „Symbolischen Link erstellen“ hervorgehoben ist

Ich würde gerne wissen, warum dies abgelehnt wurde, damit ich von nun an qualitativ hochwertigere Antworten geben kann :)
wahrscheinlich, weil die Frage lautete: "Wie kann ich einen symbolischen Link in Terminal erstellen?" Aber ich unterschätze dich nicht :)
Bedeutet dies, dass es einfach keine Möglichkeit gibt, dies von der Mac-GUI aus zu tun, ohne Software zu installieren? Außerdem kann ich nicht umhin zu denken, dass dies mit Automator hätte geschehen können.
@EdwardFalk Ich denke, in El Capitan können Sie Command+ gedrückt halten, Optionwährend Sie eine Datei ziehen ... die Antwort wird später aktualisiert
@BenLeggiero Das macht einen Alias.
@BenLeggerio, der Unterschied wird hier erklärt: apple.stackexchange.com/questions/2991/…
Dies sollte unbedingt mit Automator machbar sein ...
@Wowfunhappy Fühlen Sie sich frei, Ihre eigene Antwort zu posten, in der detailliert beschrieben wird, wie das geht! 😁

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

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

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

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

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

Ein einfacher .(Punkt) ergibt das pwd. Keine ausgefallenen Argumente nötig :)
@mylogon hahaha ich überdenke manchmal gerne. vereinfacht meine Antwort!
@mylogon Ich habe gerade festgestellt, dass .das unter macOS nicht funktioniert. hab es noch nicht mit linux probiert. Die Benutzung ./hat dazu geführt, foo -> ./foowas auf sich selbst hinweist.
Wie lautet der vollständige Befehl, den Sie eingegeben haben?

Als Hinweis für alle müssen Sie vollständige Pfadnamen verwenden . Das war mir nicht sofort klar, da ich das Gefühl hatte, ich könnte relative Pfade in einem Ordner symbolisieren, in dem ich den Befehl ausführte. Ich könnte mich irren (ich bin ein MacOS-Neuling).

Wenn ich beispielsweise versuche, meinen Bilderordner in meinem Downloads-Ordner zu verlinken, während cd in meinem Benutzer-Home-Verzeichnis ist, funktioniert dies nicht:

Users\stevebauman >_ ln -s Pictures Downloads

Stattdessen müssen Sie Folgendes verwenden:

Users\stevebauman >_ ln -s /Users/stevebauman/Pictures /Users/stevebauman/Downloads
Nicht genau - der Link muss von dort aus erweitert werden, damit ln -s ../Pictures Pictures funktioniert. Der Link funktioniert so, als ob Sie zu dem Ort wechseln, an dem Sie den Link speichern

Wenn der Quellpfad nicht relativ zu Ihrem Ziel ist, verwenden Sie einen absoluten Pfad zu Ihrem Quellpfad und setzen Sie ihn in einfache Anführungszeichen

$ ln -s '/any file/could have (special chars)/or spaces/test' '/some/other place/file'

Sie können immer den aktuellen vollständigen Pfad ohne Escapezeichen zu etwas herausfinden, indem Sie zu diesem Ordner im Terminal gehen und dann tippen

$ pwd