Links

Am besten kann man Links mit einem Beispiel erklären. Erstellen Sie also eine (normale) Datei:

$ pwd
/home/franz/example
   $ ls
   $ touch a
   $ ls -il a
   32555 -rw-rw-r--    1 franz     franz            0 Dec 10 08:12 a

Die Option -i des Befehls ls gibt die Inode-Nummer aus, die am Anfang der Ausgabezeile steht. Wie Sie sehen können, waren vor der Erstellung der Datei a keine Dateien im Verzeichnis vorhanden. Das nächste interessante Feld ist das dritte Feld, in dem die Anzahl der Datei-Links (besser: Inode-Links) aufgelistet ist.

Der Befehl touch a kann in zwei Aktionen aufgegliedert werden:

Wenn wir aber das Folgende eingeben:

   $ ln a b
   $ ls -il a b
   32555 -rw-rw-r--    2 franz     franz            0 Dec 10 08:12 a
   32555 -rw-rw-r--    2 franz     franz            0 Dec 10 08:12 b
   $

erstellen wir einen zweiten Link zum gleichen Inode. Wie Sie unschwer sehen können, haben wir keine Datei mit Namen b erstellt sondern einen zweiten Link auf den Inode Nummer 32555 im gleichen Verzeichnis angelegt und diesem neuen Link den Namen b gegeben. Daher steht jetzt in der Ausgabe von ls -l eine 2 im dritten Feld anstelle der 1.

Jetzt machen wir folgendes:

   $ rm a
   $ ls -il b
   32555 -rw-rw-r--    1 franz     franz            0 Dec 10 08:12 b
   $

und stellen fest, dass, obwohl wir die „ursprüngliche Datei“ gelöscht haben, der Inode immer noch existiert. Allerdings hat er jetzt nur noch einen Link und zwar den auf die Datei /home/franz/example/b.

Daher hat eine Datei unter UNIX® keinen Namen sondern einen oder mehrere Link(s) in einem oder mehreren Verzeichnis(sen).

Auch Verzeichnisse sind in Inodes gespeichert, ihre Links entsprechen der Anzahl von Unterverzeichnissen, die sie besitzen. Daher hat jedes Verzeichnis mindestens zwei Links: der des Verzeichnisses selbst (.) und der des übergeordneten Verzeichnisses (..).

Typische Vertreter von Dateien ohne Links (d.h. ohne Namen) sind Netzwerk-Verbindungen; Sie werden, egal wo Sie suchen, nie eine Datei finden, die Ihre Internet-Verbindung zur Mandrake Linux Website anzeigt. Gleiches gilt für eine Pipe in der shell, der Inode für die Pipe existiert, ist aber nicht gelinkt. Weitere Beispiele für Inodes ohne Namen sind temporäre Dateien. Sie erstellen eine temporäre Datei, arbeiten damit und löschen sie wieder. Solange die Datei geöffnet ist existiert sie auch. Sie kann aber von niemandem sonst benutzt werden, da sie keinen Namen besitzt. Daher wird die temporäre Datei auch automatisch entfernt falls die Anwendung einmal abstürzt.