Der Befehl ln erstellt Verknüpfungen zwischen Dateien und Verzeichnissen. Diese Links ermöglichen es, auf dieselbe Datei unter verschiedenen Namen oder an verschiedenen Orten im Dateisystem zuzugreifen.

Es gibt zwei Arten von Links:

Hard Links verweisen direkt auf den Inode einer Datei – den Datenblock auf der Festplatte. Eine Datei mit mehreren Hard Links hat mehrere gleichwertige Namen. Das Löschen eines Namens entfernt die Datei erst, wenn der letzte Hard Link gelöscht wird. Hard Links funktionieren nur innerhalb desselben Dateisystems und nicht für Verzeichnisse.

Symbolische Links (auch Symlinks oder Softlinks) speichern den Pfad zur Zieldatei als Text. Sie funktionieren ähnlich wie Verknüpfungen unter Windows. Ein Symlink kann auf Dateien und Verzeichnisse verweisen – auch über Dateisystemgrenzen hinweg. Wird das Ziel gelöscht oder verschoben, zeigt der Symlink ins Leere.

Syntax des ln-Befehls

ln [OPTIONEN] ZIEL LINKNAME
  • ZIEL – Die existierende Datei oder das Verzeichnis, auf das verwiesen werden soll.
  • LINKNAME – Der Name des neu erstellten Links.

Ohne Optionen erstellt ln einen Hard Link. Für symbolische Links verwendest du die Option -s.

Um einen Symlink zu erstellen, nutze ln mit der Option -s:

ln -s /pfad/zur/originaldatei linkname

Ein konkretes Beispiel: Du möchtest einen Symlink namens config erstellen, der auf /etc/nginx/nginx.conf zeigt:

ln -s /etc/nginx/nginx.conf config

Mit ls -l überprüfst du das Ergebnis:

ls -l config

Die Ausgabe zeigt den Link und sein Ziel:

lrwxrwxrwx 1 user group 21 Jan 16 10:00 config -> /etc/nginx/nginx.conf

Das l am Anfang kennzeichnet einen symbolischen Link. Der Pfeil (->) zeigt, wohin der Link verweist.

Symbolische Links auf Verzeichnisse erstellst du genauso wie Links auf Dateien:

ln -s /var/log logs

Dieser Befehl erstellt einen Symlink namens logs, der auf das Verzeichnis /var/log zeigt. Über cd logs gelangst du direkt ins Zielverzeichnis.

Ein typischer Anwendungsfall: Du möchtest schnellen Zugriff auf einen Ordner in deinem Home-Verzeichnis:

ln -s /mnt/backup/projekte ~/projekte

Für einen Hard Link lässt du einfach die Option -s weg:

ln original.txt hardlink.txt

Beide Dateinamen verweisen jetzt auf dieselben Daten. Änderungen an einer der beiden Dateien wirken sich auf beide aus, da sie denselben Inhalt teilen.

Mit ls -li siehst du, dass beide Dateien denselben Inode haben:

ls -li original.txt hardlink.txt

Existiert bereits eine Datei oder ein Link mit dem gewählten Namen, gibt ln eine Fehlermeldung aus:

ln: Symbolischer Link 'linkname' konnte nicht erstellt werden: Datei existiert

Mit der Option -f (force) überschreibst du den bestehenden Link:

ln -sf /neues/ziel linkname

Bei Symlinks auf Verzeichnisse benötigst du zusätzlich -n, damit der bestehende Link ersetzt und nicht ins Zielverzeichnis geschrieben wird:

ln -sfn /neues/verzeichnis existierender_link

Zum Löschen eines Symlinks verwendest du rm oder unlink:

rm linkname

Oder:

unlink linkname

Achte darauf, keinen abschließenden Schrägstrich anzuhängen. Bei rm linkname/ würde das System versuchen, den Inhalt des Zielverzeichnisses zu löschen – nicht den Link selbst.

Das Entfernen eines Symlinks löscht nur den Link. Die Zieldatei bleibt unberührt.

Wichtige Optionen

OptionBeschreibung
-sErstellt einen symbolischen statt eines Hard Links
-fÜberschreibt vorhandene Dateien ohne Nachfrage
-nBehandelt Symlinks auf Verzeichnisse nicht als Verzeichnisse
-vZeigt jede erstellte Verknüpfung an
-iFragt vor dem Überschreiben nach Bestätigung

Zusammenfassung

Der Befehl ln erstellt Hard Links (standardmäßig) oder symbolische Links (mit -s). Symbolische Links sind flexibler und können auf Verzeichnisse sowie dateisystemübergreifend verweisen. Hard Links teilen denselben Inode und existieren nur innerhalb eines Dateisystems.

Verwandte Artikel