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.
Hard Links und symbolische Links
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.
Symbolischen Link erstellen
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.
Symlink zu einem Verzeichnis erstellen
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
Hard Link erstellen
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
Bestehenden Link überschreiben
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
Symbolische Links entfernen
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
| Option | Beschreibung |
|---|---|
-s | Erstellt einen symbolischen statt eines Hard Links |
-f | Überschreibt vorhandene Dateien ohne Nachfrage |
-n | Behandelt Symlinks auf Verzeichnisse nicht als Verzeichnisse |
-v | Zeigt jede erstellte Verknüpfung an |
-i | Fragt 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.