wfmedia.ch

ln

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 setzen.

Man unterscheidet zwischen Hardlinks und symbolischen (oder Soft-) Links, die zwar in etwa dasselbe bewirken, aber technisch völlig unterschiedlich realisiert sind. Symbolische Links - auch Verknüpfungen genannt - können nicht nur via Kommandozeile (Terminal), sondern mit diversen grafischen Dateimanagern erstellt werden.


Hardlinks
Ein Hardlink ist einfach ein Eintrag im Dateisystem mit einem Namen, der auf den tatsächlichen Speicherplatz einer Datei zeigt. Jede Datei hat immer mindestens einen Hardlink, denn ansonsten könnte man sie nicht ohne weiteres 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 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 manuelle Erzeugen von Hardlinks auf Verzeichnisse ist sogar ganz verboten, um die Interpretation von .. konsistent zu halten.


Symbolische Verknüpfungen
Symbolische Verknüpfungen ("Symlinks", "Softlinks" oder oft auch nur Verknüpfungen genannt) 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 der Zieldatei enthält. Dieser Pfad kann sowohl relativ (../anderes_verzeichnis/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 tatsächlichen Speicherplatz der Zieldatei. Wird diese gelöscht, so bleibt die Verknüpfung als "toter Link" zurück und zeigt von nun an ins Leere. Dies kann auch beim Verschieben der Zieldatei passieren, vor allem bei Verwendung eines absoluten Pfades im Softlink.


Installation
Das Programm ln ist im essentiellen Paket
coreutils
Befehl zum Installieren der Pakete:
sudo apt-get install coreutils

Verwendung
Die allgemeine Syntax lautet:

ln [OPTION]... ZIEL [VERKNÜPFUNGSNAME]

ln kennt folgende Optionen:

Option Beschreibung
-i oder --interactive fragt vor dem Überschreiben nach
-s oder --symbolic erzeugt eine symbolische Verknüpfung anstatt eines Hardlinks
-r oder --relative erzeugt - auch bei Angabe absoluter Pfade - eine Verknüpfung mit relativen Pfaden zueinander (setzt -s voraus)
-f oder --force vorhandene mit dem VERKNÜPFUNGSNAMEn gleichnamige Verknüpfungen oder auch Dateien überschreiben
back