UNIX Link: Zwei Namen, eine Datei |
Eine Besonderheit im UNIX-Dateisystem ist die Möglichkeit, der eigentlichen Datei mehrere Namen zuzuordnen. Man spricht hier von Links (engl. Verbindungen). Links bieten die Möglichkeit, eine Datei unter verschiedenen Namen auftreten zu lassen oder dass eine Datei an einer ganz anderen Stelle liegen kann, als da, wo ihr Zugriff benötigt wird.
ln Originaldatei NeuerName ln Originaldatei AnderesVerzeichnis |
Im ersten Falle wird ein neuer Name angegeben, im zweiten Falle wird der gleiche Namen in einem anderen Verzeichnis eingetragen. Die Reihenfolge der Parameter entspricht dem cp. Zuerst wird die bereits existierende Quelle genannt und dann das zu erzeugende Zielobjekt. Mit dem Parameter -f kann ein bestehender gleicher Dateiname überschrieben werden. Beispiel: Wenn eine Datei namens hugo existiert, bewirkt der Befehl
ln hugo erna |
dass hinterher scheinbar zwei Dateien existieren: hugo und erna. Statt aber eine Kopie zu besitzen, zeigen beide Einträge auf die gleiche Datei. Man merkt dies leicht, wenn man in einer der beiden eine Änderung durchführt und in der anderen nachschaut und die Änderung auch vorfindet. Beim Anzeigen der Dateien mit ls -l kann man bei solchen Dateien an der 2 erkennen, dass auf diese Datei zwei Einträge zeigen. Ansonsten unterscheidet sich hugo nicht von erna. Es ist auch egal, welche Datei zuerst gelöscht wird. Die Datei wird erst gelöscht, wenn der letzte Link gelöscht wird.
ln -s /etc/printcap myPrintCap |
gaston> ls -l X11 lrwxrwxrwx 1 root root 5 Mär 17 2001 X11 -> X11R6 gaston> |
Den symbolischen Link kann man vereinfacht als eine Datei ansehen, die den Ort einer anderen Datei beinhaltet. Damit wird klar, dass der Link an jede Stelle des UNIX Verzeichnisbaumes zeigen kann, ganz gleich auf welchem Medium es sich befindet. Es ist aber auch einleuchtend, dass die Originaldatei nichts vom Link >>weiß<< und so entfernt werden kann, obwohl noch ein Link existiert. Der symbolische Link wird vor allem an zwei Stellen eingesetzt. Zum einen ist er hilfreich, wenn eine Platte droht vollzulaufen. Man kann Dateien eines gesamten Verzeichnisses oder auch einzelne Dateien auf ein freies Laufwerk auslagern und einen symbolischen Link auf diese Stelle an der Originalposition unterbringen. Das Verschwinden der Datei bleibt für (fast) alle Programme unsichtbar. Gern wird es auch eingesetzt, wenn man die Version einer Software dokumentieren will. Beispielsweise wird das Paket wollmilchsau zur Zeit in der Version 1.4 ausgeliefert. Dann installiert man sie im Verzeichnis /opt/wollmilchsau.v.1.4.german Um allerdings auf die Software zuzugreifen erstellt man einen symbolischen Link:
ln -s /opt/wollmilchsau.v.1.4.german /opt/wollmilchsau |
Man kann später erkennen, dass die deutsche 1.4 installiert wurde. Man kann sogar die 1.5 installieren, ohne die Version 1.4 endgültig löschen zu müssen.
Symbolische Links speichern quasi die textuelle Beschreibung der Quelle. Anders ausgedrückt, merken sie sich den Pfadnamen, so wie er beim Anlegen des Links angegeben wurde. Es wird beim Anlegen nicht überprüft, ob der Link wirklich funktioniert. Entsprechend verschwindet der Link auch nicht, wenn das Ziel verschwindet, auf das er weist. Es ergeben sich darüber hinaus Stolperfallen, wenn nicht ein absoluter, sondern ein relativer Pfad als Ziel eines symbolischen Links angegeben wird. Im folgenden Beispiel liegt der zu erzeugende Link in einem Unterverzeichnis, in diesem Fall savedir/my20020105. Da aber das Quellverzeichnis relativ zur aktuellen Position steht, wird auch der relative Pfad abgelegt. Aus Sicht des symbolischen Link liegt aber das Verzeichnis my nicht in ../my, sondern in ../../my. Es gibt keine Fehlermeldung beim Erzeugen des Links, aber die erste Benutzung wird scheitern.
ln -s ../my savedir/my20020105 |
|
Diese Seite basiert auf Inhalten aus dem Buch
Arnold Willemer: Wie werde ich UNIX-Guru Verlagsrechte bei galileo computing |
| Homepage |
(C) Copyright 2002 Arnold Willemer
|