Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
ln steht für link und erzeugt eine Verknüpfung zu einer Datei oder einem Verzeichnis. Man kann danach auf eine Datei nicht nur über ihren ursprünglichen Namen bzw. Pfad, sondern auch über den Namen des Links zugreifen. Dies ist zum Beispiel nützlich, wenn ein Programm eine bestimmte Programmbibliothek verlangt, die veraltet ist. Man kann nun einfach eine Verknüpfung mit dem Namen der veralteten Bibliothek auf die installierte Version setzten.
Man unterscheidet zwischen Hardlinks und symbolischen (oder Soft-) Links, die zwar in etwa dasselbe bewirken, aber technisch völlig unterschiedlich realisiert sind. Symbolische Links (Verknüpfungen) können nicht nur auf der Kommandozeile (Terminal), sondern beispielsweise mit den Dateimanagern von GNOME (Nautilus) und KDE (Dolphin) erstellt werden. Aber auch andere Dateimanager können "Symlinks" erstellen, nur ist diese Funktion im Kontextmenü () als "Senden an -> Desktop / Arbeitsfläche usw." versteckt.
Ein Hardlink ist einfach ein Verzeichniseintrag mit einem Namen, der auf eine Datei zeigt. Jede Datei hat immer mindestens einen Hardlink, denn ansonsten könnte man sie im Dateisystem nicht finden. Auch die Verzeichniseinträge . und .. sind in Wirklichkeit Hardlinks, die auf das aktuelle bzw. das übergeordnete Verzeichnis zeigen. Ein Verzeichnis hat also immer mindestens zwei Hardlinks, nämlich den eigentlichen Namen und ., und zusätzlich noch einen pro untergeordnetem Verzeichnis. (Je ein .. pro Verzeichnis.)
Für normale Operationen wie das Erstellen eines Verzeichnisses oder einer Datei benötigt man natürlich nicht den ln-Befehl. Dieser wird nur verwendet, um zusätzliche Links zu erzeugen. Wie viele Hardlinks aktuell auf eine Datei oder ein Verzeichnis zeigen, kann man der zweiten Spalte einer ls -l-Ausgabe entnehmen. Diese verschiedenen Links sind exakt gleichwertig und es ist völlig unerheblich, welcher zuerst da war. Änderungen an Inhalt oder Datei-Attributen wirken sich auf alle Links aus. (Weil es sich ja tatsächlich um exakt dieselbe Datei handelt). Erst wenn alle Links auf eine Datei gelöscht wurden, ist die Datei wirklich gelöscht.
Einen gravierenden Nachteil haben Hardlinks allerdings. Auf Grund der Technik, die dahinter steckt, ist es nicht möglich Hardlinks über die Grenzen von Dateisystemen hinweg einzusetzen. Um sich nicht immer Gedanken darüber machen zu müssen, ob das Ziel vielleicht auf einem anderen Dateisystem liegen könnte, werden deswegen fast ausschließlich "symbolische Verknüpfungen" genutzt. Das Erzeugen von Hardlinks auf Verzeichnisse ist sogar ganz verboten, weil sonst die Gefahr eines Zirkelschlusses bestünde.
Mit diesem Befehl allerdings können auch ganze Verzeichnisse hart verlinkt werden. Die Ordner werden dabei neu angelegt und die Dateien verlinkt:
cp -al QUELLE ZIEL
Symbolische Verknüpfungen (oder "Softlinks") wurden geschaffen, um diese Unzulänglichkeit der Hardlinks zu umgehen. Sie funktionieren ähnlich wie die HTML-Links auf Webseiten. Ein symbolischer Link ist einfach eine kleine Datei bei der das l-Bit gesetzt ist, und die den Pfad des Zieles enthält. Dieser Pfad kann sowohl relativ (../anderes_verz/datei), als auch absolut (/usr/share/irgendwo/datei) sein. In einer ls -l Auflistung wird das Ziel des Softlinks nach einem Pfeil (->
) angezeigt.
Symbolische Verknüpfungen sind, wie schon angedeutet, auch über Dateisystemgrenzen hinweg möglich, weswegen sie bevorzugt eingesetzt werden. Allerdings fehlt ihnen die direkte Verbindung zum Speicherplatz der Zieldatei. Wird diese gelöscht, so bleibt die Verknüpfung als "toter Link" zurück und zeigt von nun an ins Leere.
Das Programm ln ist im essentiellen Paket
coreutils
von Ubuntu enthalten und ist deshalb auf jedem System bereits installiert.
Die allgemeine Syntax lautet [1]:
ln [OPTION]... ZIEL [Verknüpfungsname]
oder um mehrere Dateien in ein Verzeichnis zu verlinken:
ln [OPTION]... Ziele... LINKVERZEICHNIS
ln kennt folgende Optionen:
ln-Optionen | |
Option | Beschreibung |
-i oder --interactive | fragt vor dem Überschreiben nach |
-s oder --symbolic | erzeugt eine symbolische Verknüpfung anstatt eines Hardlinks |
-f oder --force | vorhandene Ziele entfernen |
Die gleiche Funktionalität wie ln
hat auch der Befehl cp
in Verbindung mit den Optionen -l
(Hardlink) oder -s
(Softlink). Außerdem lassen sich Softlinks in den grafischen Dateimanagern durch Kopieren mit gleichzeitig gedrückten Tasten
⇧ und
Strg einrichten.
Im folgenden Beispiel wird eine Verknüpfung auf dem Desktop (Verknüpfung_mit_Tagesplaner) zu einer Datei mit dem Namen haupt.doc im Homeverzeichnis des Benutzers BENUTZER
erstellt:
ln -s /home/BENUTZER/Dokumente/Tagesplaner/Aufgaben/haupt.doc /home/BENUTZER/Arbeitsfläche/Verknüpfung_mit_Tagesplaner
Weitere Beispiele zur praktischen Verwendung finden sich im Artikel opt.
Wenn bei Erstellung eines symbolischen Links der erste Parameter ein relativer Pfad ist, ist dieser relativ zum zweiten Parameter (dem Link), nicht zu dem Ort, an dem man sich gerade befindet (da der Pfad dann als relativer Pfad gespeichert wird).
Um eine Verknüpfung zu löschen, kann man
in einer Konsole den Befehl rm
einen beliebigen Dateimanager
verwenden.
Folgender Befehl sucht im aktuellen Verzeichnis (.) nach fehlerhaften Links:
find -L . -type l
Eine weitere – allerdings eher selten genutzte – Möglichkeit, Daten an mehreren Orten im Dateisystem erscheinen zu lassen, bietet der Befehl mount. Nach dem Befehl:
mount --bind /PFAD/VERZEICHNIS1 /PFAD/VERZEICHNIS2
(wobei beide Verzeichnisse tatsächlich existieren müssen) erscheint bis zum nächsten Systemstart der Inhalt von VERZEICHNIS1 auch unter VERZEICHNIS2. Details sind der Manpage: von bind zu entnehmen.
Link Shell Extension - NTFS-Links unter Windows erstellen
Shell/Befehlsübersicht Übersicht über verschiedene Shell-Befehle
Diese Revision wurde am 16. Januar 2016 16:20 von V_for_Vortex erstellt.