Wir müssen uns nun einem weit verbreitetem Missverständnis, das sogar unter Unix-Benutzern herrscht, widmen. Es resultiert größtenteils aus der Annahme, dass Verweise, wie wir sie bislang kennen gelernt haben (fälschlicherweise ,,harte`` Verweise genannt), nur mit regulären Dateien verknüpft werden (wir haben gesehen, dass dies nicht der Fall ist – sogar symbolische Verweise werden ,,verknüpft``).
Zunächst müssen wir aber erklären, was symbolische Verweise sind.[1]
Symbolische Verweise sind Dateien eines bestimmten Typs, deren einziger Inhalt aus einer beliebigen Zeichenkette besteht, die auf eine eventuell existierende Datei verweist. Sollten Sie in einer Kommandozeile oder in einem Programm auf einen symbolischen Verweis zugreifen wollen, greifen Sie in Wirklichkeit auf die Datei zu, auf die verwiesen wird – sofern sie existiert. Folgendes Beispiel verdeutlicht dies:
$ echo Hallo >datei $ ln -s datei verweis $ ls -il total 4 169 -rw-rw-r-- 1 franz franz 6 Dez 10 21:30 datei 416 lrwxrwxrwx 1 franz franz 6 Dez 10 21:30 verweis -> datei $ cat datei Hallo $ cat verweis Hallo |
Wie Sie sehen, steht als Dateityp für verweis ein ,,l``. Es handelt sich also um einen symbolischen Verweis. Die Zugriffsrechte einer solchen Datei sind relativ uninteressant, da sie immer die Form ,,rwxrwxrwx`` haben. Sie können immer sehen, dass es sich wirklich um eine andere Datei als datei handelt, da die Inode-Nummern unterschiedlich sind. Dennoch verweist es symbolisch auf die reguläre Datei, bei dem Befehl cat verweis wird also in Wirklichkeit der Inhalt der Datei datei ausgegeben. Um zu demonstrieren, dass ein symbolischer Verweis eine Zeichenkette enthält, kann man Folgendes tun:
$ ln -s "Ich bin keine existierende Datei" weiterer_verweis $ ls -il weiterer_verweis 418 lrwxrwxrwx 1 franz franz 20 Dez 10 21:43 weiterer_verweis -> Ich bin keine existierende Datei $ cat weiterer_verweis cat: weiterer_verweis: No such file or directory $ |
Symbolische Verweise existieren jedoch, da sie einige Einschränkungen aus dem Weg räumen, die normale, ,,harte`` Verweise aufweisen:
ein Verweis zwischen Dateien auf unterschiedlichen Dateisystemen ist nicht möglich, da der Verweis-Zähler direkt im Inode gespeichert wird und Inodes nicht von mehreren Dateisystemen gemeinsam genutzt werden können, symbolische Verweise gestatten dies;
man kann nicht auf ein Verzeichnis verweisen, da, wie wir bereits gesehen haben, der Verweis-Zähler eines Verzeichnisses anderweitig genutzt wird; ein symbolischer Verweis ist aber ohne weiteres möglich.
Aus diesen Gründen sind symbolische Verweise also in vieler Hinsicht sehr nützlich, und man neigt dazu sie zu benutzen, auch wenn ein normaler Verweis ausreichen würde. Ein Vorteil der normalen Verweise ist, das Sie die Datei nicht verlieren, sollten Sie einmal das ,,Original`` löschen :-).
Sollten Sie gut aufgepasst haben, können Sie jetzt zum Abschluss sagen, wofür die Größe eines symbolischen Verweises steht. Genau, es ist die Länge der Zeichenkette.
[1] | Im Englischen werden die symbolischen Verweise auch ,,soft links``, genannt, während die normalen (fälschlicherweise) ,,hard links`` genannt werden, was zu dem deutschen (immer noch falschen) Begriff der ,,harten`` Verweise geführt hat. |