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.