Linux / Befehl ln: Erstellen Sie harte Links und symbolische Links
ln erstellt standardmäßig Hardlinks und mit -s symbolische Links. Ein Hardlink ist ein weiterer Name für denselben Inode; ein symbolischer Link speichert einen Zielpfad und kann deshalb auch auf Verzeichnisse oder andere Dateisysteme verweisen.
Die Beispiele verwenden das Verhalten von GNU Coreutils. Prüfen Sie ln --help, man ln und die Dokumentation Ihrer Distribution, wenn Portabilität oder eine versionsspezifische Option wichtig ist.
Ergänzende Befehle und Anwendungsfälle finden Sie in Wesentliche Linux-Befehle: Eine praktische Referenz nach Aufgaben.
Was ist der Befehl ln?
ln erstellt standardmäßig harte Links und symbolische Links mit -s. Ein harter Link ist ein anderer Name für denselben Inode auf einem Dateisystem. Ein symbolischer Link ist eine separate Datei, die einen Zielpfad enthält, und kann über Dateisysteme hinweg oder auf ein Verzeichnis zeigen.
Grundlegende Syntax
ln [OPTION]... [-T] TARGET LINK_NAME ln [OPTION]... TARGET... DIRECTORY
Setzen Sie Anführungszeichen um Pfade, die Leerzeichen enthalten. Wenn unterstützt, setzen Sie -- vor Operanden, die mit einem Bindestrich beginnen, damit sie nicht als Optionen interpretiert werden.
Grundlegende Verwendung von ln
Erstellen Sie einen harten Link
Beide Namen beziehen sich auf denselben Inode. Änderungen über einen der beiden Pfade ändern dieselben zugrunde liegenden Datei-Daten.
ln original.txt hard-link.txt stat -c '%i %h %n' original.txt hard-link.txt
Erstellen eines symbolischen Links
Verwenden Sie -s. Der gespeicherte Zielstring kann absolut oder relativ sein und kann auf einen Pfad verweisen, der möglicherweise noch nicht existiert.
ln -s /opt/myapp/current app-current readlink app-current
Erstellen mehrerer Links in einem Verzeichnis
Listen Sie mehrere Ziele und ein finales Verzeichnis auf oder platzieren Sie das Zielverzeichnis nach -t.
ln -s file1 file2 links/ ln -s -t links file1 file2
Überprüfen des Pfads, auf den ein symbolischer Link zeigt
ln -s zeigt normalerweise keine Erfolgsmeldung an. Der in dem Link gespeicherte Zielstring kann mit readlink überprüft werden.
printf 'demo\n' > original.txt ln -s original.txt shortcut.txt readlink shortcut.txt
Die Beispielausgabe ist original.txt. Relative Pfade werden basierend auf dem Verzeichnis interpretiert, in dem sich der Link befindet, daher kann das Verschieben des Links an einen anderen Ort den Link unterbrechen.
Wichtige Optionen
| Option | Zweck |
|---|---|
-s |
Symbolische Links statt Hardlinks erstellen. |
-r |
Einen relativen symbolischen Zielpfad erzeugen; verwenden Sie ihn mit -s. |
-f |
Einen vorhandenen Linknamen entfernen, bevor der neue Link erstellt wird. |
-i |
Vor dem Ersetzen eines vorhandenen Linknamens eine Aufforderung geben. |
-n |
Ein Ziel, das ein Symlink zu einem Verzeichnis ist, als den Link selbst behandeln. |
-T |
Den Linknamen als genauen Pfad behandeln. |
-b |
Ein vorhandenes Ziel sichern. |
-v |
Berichten Sie über erstellte Links. |
Lange Optionen machen überprüfte Skripte oft leichter verständlich. Wenn ein Skript auf Nicht-GNU-Systemen laufen muss, überprüfen Sie jede nicht-POSIX-Option auf der Zielplattform.
Praktische Beispiele
Erstellen Sie einen relativen symbolischen Link
Relative Ziele werden vom Verzeichnis, das den Link enthält, und nicht vom aktuellen Verzeichnis der Shell aufgelöst. GNU ln -sr kann ein relatives Ziel berechnen.
ln -s ../releases/2026-09 app/current ln -sr /srv/app/releases/2026-09 /srv/app/current
Ersetzen Sie einen Deployment-Link vorsichtig
Bestätigen Sie zuerst, ob der vorhandene Pfad ein Symlink oder ein echtes Verzeichnis ist. Unter GNU-Systemen kann -sfnT nach der Validierung einen exakten Linkpfad ersetzen.
readlink current ln -sfnT releases/2026-10 current readlink current
Untersuchen Sie den Linktyp und die Auflösung
Kombinieren Sie ls -l, readlink und stat, um den gespeicherten String, das endgültige Ziel und die Inode-Beziehung zu überprüfen.
ls -l app-current readlink app-current readlink -f app-current stat app-current
ln und verwandte Befehle
| Befehl oder Methode | Hauptrolle | Geeignet für |
|---|---|---|
| Hardlink | Ein anderer Name für einen Inode | Normale Dateien im selben Dateisystem |
| Symbolischer Link | Eine separate Datei, die einen Zielpfad speichert | Verzeichnisse, Dateisystem-übergreifende Ziele und Zeiger |
cp |
Eine unabhängige Datenkopie | Kopien, die sich unterscheiden sollen |
| Bind-Mount | Einen Pfad an einem anderen Einhängepunkt sichtbar machen | Verzeichnisabbildung auf Dateisystemebene |
Wichtige Hinweise
Merken Sie sich die Operandenreihenfolge
Die gebräuchliche Form ist ln TARGET LINK_NAME. Das Umkehren der Absicht kann einen Link an der falschen Stelle erzeugen.
Relative Ziele basieren auf dem Speicherort des Links
Ein relativer String, der von der aktuellen Shell funktioniert, kann fehlschlagen, wenn der Link an einem anderen Ort erstellt wird. Berechnen Sie ihn vom Verzeichnis des Links aus.
Harte Links können keine Dateisysteme überschreiten
Sie teilen sich einen Inode und bleiben daher in einem Dateisystem. Harte Links zu Verzeichnissen sind normalerweise eingeschränkt.
FAQ
Erstellt ln standardmäßig einen symbolischen Link?
Nein. Es erstellt einen Hardlink, es sei denn, -s wird verwendet.
Zerstört das Löschen des ursprünglichen Namens eine Datei mit weiteren Hardlinks?
Nein. Die Daten bleiben erhalten, solange ein anderer Hardlink auf den Inode verweist.
Wie erkenne ich einen defekten symbolischen Link?
Verwenden Sie readlink, um den gespeicherten Pfad zu überprüfen, und readlink -e oder einen geeigneten Test, um die endgültige Auflösung zu prüfen.
Sollte ein symbolischer Link einen absoluten oder relativen Zielpfad verwenden?
Relative Links eignen sich für verschiebbare Verzeichnisbäume; absolute Links eignen sich für feste Systempfade. Wählen Sie basierend darauf, wie sich der Link und das Ziel bewegen werden.
Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Coreutils ln Dokumentation und GNU Coreutils-Handbuch.




