claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 11/2004   »   Ausgabe bestellen

Verweise erstellen mit "ln"

Umleitung

von Daniel Molkentin


Auf grafischen Oberflächen sind Dateiverknüpfungen eine Selbstverständlichkeit. Doch Linux kennt dieses Konzept auch auf der Kommandozeile. EasyLinux zeigt, wie Sie mit dem Befehl "ln" Verweise erstellen und sich damit die Organisation Ihrer Daten erleichtern.

Obwohl geordnete Verzeichnishierarchien zur Übersichtlichkeit beitragen, sind sie in der Praxis manchmal hinderlich und unpraktisch. Wieso sollte man jedes Mal durch etliche Verzeichnisse steigen, wenn man tagelang an einem Teilpunkt eines Projekts im aktuellen Geschäftsjahr arbeitet? Windows und grafische Oberflächen wie KDE bieten dazu Verknüpfungen in Form von Dateien mit den Endungen .lnk bzw. .desktop. Diesen kann man eigene Icons zuordnen und weitere Anpassungen vornehmen. Doch Linux kennt Verweise, hier "Links" genannt, schon wesentlich länger. Auch wenn sie auf den ersten Blick vergleichsweise rundimentär wirken, sind sie auf der Kommandozeile unschlagbar.

So funktioniert's

Verweise erstellen Sie mit dem Kommandozeilenbefehl ln. Dieser kann auf verschiedene Arten verwendet werden: Oft ist es nützlich, eine Datei aus einem anderen Verzeichnis mit demselben Namen auch im aktuellen Verzeichnis liegen zu haben. Dazu genügt es, in das Verzeichnis zu wechseln, in dem der Verweis liegen soll. Das Kommando

ln -s Dokumente/projekte/uebersicht.txt

legt im aktuellen Verzeichnis einen so genannten "Soft"- oder symbolischen Link unter dem Namen uebersicht.txt an. Der Datei-Manager Konqueror zeigt solche Links kursiv an -- über einen Klick auf das Symbol öffnet er die echte Datei.

Soll der Verweis einen anderen Namen tragen, übergeben Sie diesen als zweites Argument:

ln -s Dokumente/projekte/uebersicht.txt projekte.txt

Auch für Verzeichnisse erzeugt ln Softlinks: Der Aufruf

ln -s Dokumente/projekte

legt einen gleichnamigen Verweis im aktuellen Verzeichnis an. Wenn der Link in einem anderen Verzeichnis liegen soll, setzen Sie das gewünschte Verzeichnis als zweiten Parameter hinzu:

ln -s Dokumente/projekte/uebersicht.txt /home/danimo/

Mit dem Befehl

ls -l

erkennen Sie, hinter welchen Dateien sich Links verstecken und worauf Sie zeigen. Bei symbolischen Links steht hinter dem Dateinamen noch ein Pfeil, gefolgt von der Datei, auf die er verweist (Abbildung 1). Wer öfter im Dateisystem stöbert, stößt unter Linux an vielen Stellen auf solche Links.

Abb. 1: Der Befehl "ls -l" markiert Links farbig und zeigt mit einem Pfeil an, worauf sie zeigen.

Schaut man sich die Ausgabe von ls -l genauer an, fällt auf, dass jedermann Lese-, Schreib- und Ausführrechte für den Link besitzt. In Wirklichkeit sind jedoch die Rechte der Orginaldatei entscheidend. Wenn Sie mit dem Befehl chmod oder mit einem grafischen Datei-Manager wie Konqueror die Rechte eines Softlinks ändern, beeinflussen Sie in Wirklichkeit die Rechte der Originaldateien.

Genau so schnell, wie er entstanden ist, werden Sie einen Softlink wieder los. Es genügt

rm projektuebersicht.txt

Auch um Verweise auf Verzeichnisse zu löschen, benutzen Sie den Befehl rm, etwa

rm projekte

Keine Sorge: Dieser Befehl löscht nur den Link; die Orginaldatei, auf die er verweist, bleibt unberührt. Die einzigen, die einen Softlink löschen dürfen, sind sein Besitzer und natürlich der System-Verwalter root.

Durch die Farbe überführt

Der Befehl ln prüft den eingegebenen Pfad nicht. Deshalb können Sie auch ohne weiteres Softlinks anlegen, die ins Leere, also auf eine nicht existierende Datei, zeigen. Unter SuSE und Mandrake Linux sowie Fedora Core lässt sich das auf den ersten Blick mit dem Befehl ls erkennen: Die Dateien werden rot hervorgehoben. Ist ein Softlink hingegen gültig, erscheint er in der ls-Ausgabe meist türkis (Abbildung 2).

Abb. 2: Ins Leere zeigende Softlinks entdeckt man durch die farbige Hervorhebung. Erstellt man die fehlende Datei (hier mit dem Befehl "touch"), wird der Verweis gültig.

Werksschutz

ln ist in den aktuellen Linux-Distributionen ein vergleichsweise sicheres Werkzeug, das nicht ungewollt echte Dateien mit einem Link überschreibt. Sollte man es dennoch versuchen, etwa per

ln -s projekte.txt uebersicht.txt

im Verzeichnis projekte aus dem ersten Beispiel, warnt ln mit der Ausgabe

ln: projekte.txt: Datei existiert

Doch machmal ist es zweckmäßig, Dateien mit Links zu überschreiben. Dazu dient der Schalter -f (force, zwingen). Sind Sie sich nicht sicher, verwenden Sie statt -f besser -i (interactive): Dann fragt ln im Zweifelsfall nach, bevor es eine Aktion durchführt, bei der Daten verloren gehen.

Doch Nachfragen sind immer dann lästig, wenn man eine große Anzahl von Links automatisch, z. B. in einem Skript verarbeiten möchte. In diesem Fall weist man ln mit Hilfe des Parameters -b ("Backup") an, von existierenden Dateien eine Sicherungskopie anzufertigen. Die Namen solcher Kopien setzen sich unter Linux aus dem normalen Dateinamen und einem angehängten ~ zusammen, aus projekte.txt wird so projekte.txt~. Wem das Suffix nicht zusagt, der kann ln mit der Angabe --suffix=".bak" die Windows-Konventionen für Backup-Dateien beibringen.

Ein Problem löst der Backup-Parameter alleine nicht: Beim nächsten Mal überschreibt das Skript auch die Sicherungskopie. Damit auch das nicht passiert, kann man statt -b auch --backup verwenden: Diese Option versteht verschiedene Backup-Methoden. Um beispielsweise ein nummeriertes Backup durchzuführen, lautet der Befehl:

ln -s --backup=numbered projekte.txt uebersicht.txt

Der Befehl hängt an die Backup-Datei eine fortlaufende Nummerierung an, also uebersicht.txt.1 usw. ln kennt jedoch noch weitere, ausgefeilte Methoden für den Backup-Parameter, eine vollständige Liste finden Sie in der Tabelle "Optionen für den Parameter --backup".

Optionen für den Parameter "--backup"
OptionFunktion
none, offNiemals Backups anfertigen, trotz Angabe von --backup.
simple, neverNur einfache Backups machen (Standardeinstellung).
numbered, tNummerierte Backups anfertigen.
existing, nilNur nummerieren, wenn es bereits ein einfaches Backup gibt.

Starker Tobak

Bisher haben wir uns nur mit Softlinks beschäftigt, die am häufigsten vorkommen. Doch manchmal sind auch so genannte Hardlinks ("Harte Verweise") nützlich. Der Begriff "Verweis" ist dabei missverständlich, richtiger ist der Begriff "alternativer Dateiname". Ein symbolischer Link ist im Prinzip nichts anderes als eine kleine Datei mit einem Verweis auf eine andere. Löscht man den Symlink, betrifft das die Originaldatei nicht. Ein Hardlink dagegen ist eine zusätzliche Referenz auf eine Stelle im Dateisystem -- nicht anderes als die Originaldatei auch. Es ist ein und diesselbe Datei -- nur zugänglich von anderen Orten oder unter anderem Namen.

Einen Hardlink erzeugen Sie durch Weglassen des Parameters -s:

ln schreiben_an_mayer.txt schreiben.txt

Zwischen dem "Orginal" und dem Verweis gibt es keinen Unterschied. Hardlinks funktionieren nur mit schon vorhandenen Dateien. Außerdem können sie nicht über Partitionsgrenzen hinweg erzeugt werden. Das liegt daran, dass das Dateisystem über Anzahl und Ort der Namen, die auf eine Datei zeigen, Buch führt -- über Dateien jenseits des Dateisystem weiß es nichts.

Unter wie vielen Namen eine Datei bekannt ist -- also wie viele Hardlinks existieren -- finden Sie mit dem Befehl

ls -l

heraus. Die zweite Spalte gibt bei Dateien Auskunft über die Zahl der Hardlinks. Vor schreiben_an_mayer.txt und schreiben.txt findet sich jeweils eine Zwei (Abbildung 3).

Abb. 3: Hardlinks sind gleichberechtigte Verweise auf die selbe Datei. Die Zahl in der zweiten Spalte gibt Aufschluss über die Anzahl der Einträge im Dateisystem, die auf eine Datei verweisen.

Totgesagte leben länger

Wollen Sie sich davon überzeugen, dass sich ein Hardlink tatsächlich wie ein zweiter Dateiname verhält, löschen Sie einfach das vermeintliche "Orginal":

rm schreiben_an_mayer.txt

Ein erneutes ls -s zeigt, dass die Datei nicht ins Leere zeigt: Unter dem Namen schreiben.txt, bei dem in der zweiten Spalte nun wieder eine Eins steht, feiert die Datei fröhlich ihren Fortbestand. Erst wenn Sie auch schreiben.txt löschen, ist die Datei wirklich gelöscht. (eba)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2019 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 17:27

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]