Upline: Infos & Dokus Administration Linux Linux manpages

man ln


ln ist ein Linuxbefehl, den man nicht nur zur manuellen Anpassung der Start- und Stopskripte in den Runlevels benötigt, sondern auch an anderen Stellen oft Verwendung findet. Mit ln kann man zwei verschiedene Arten von Links (Verknüpfungen) zu Dateien bzw. Verzeichnissen erstellen. Zum einen gibt es die harten Links (auch: Hardlinks, direkte Links) und zum anderen die weichen Links (auch: Symlinks, symbolische Links).
Im Vorfeld sollte man sich einiger Eigenarten von Unix- und Linux-Dateisystemen bewußt werden. Die Eigenschaften von Dateien (Zugriffsrechte, Besitzer, phys. Speicheradresse usw.) werden in sogenannten Inodes gespeichert. Die Inode selbst repräsentiert jedoch nicht die Datei, die man im Dateisystem sieht. Im Dateisystem gibt es nur Dateien, "einige" davon sind als Verzeichnis markiert und enthalten wiederum eigene Dateien. Diese Dateien sind nichts weiter, als namentliche Referenzen einer Inode. Somit kann ein und die selbe Inode auch mehrere (Datei-)namen haben, behält dabei jedoch ihre sonstigen Einstellungen (Userrechte usw.). Eine Inode (also die physikalische Datei) wird nur dann gelöscht, wenn ihre letzte Referenz gelöscht wird. Als Referenz gelten nur Hardlinks. Diese Hardlinks unterliegen einigen Einschränkungen, so dürfen nur existierende Dateien gelinkt werden (da eine Inode vorhanden sein muss), die zu linkende Datei muss auf der selben Partition liegen und außerdem dürfen keine Verzeichnisse hart gelinkt werden. Die Anzahl der existierenden Links (Referenzen, Kopien) und die Inode-Nummer erhält man mit einem ls ali. Symbolische Links erhöhen nicht die Anzahl der Referenzen der entsprechenden Inode, sondern stellen nur eine Datei dar, die den Pfad zur Zieldatei enthält und die zusätzliche Dateieigenschaft "l" wie Link aufweist. Erkennbar sind solche Links bei einem ls ali daran, dass die 2. Spalte vor den Zugriffsrechten an der Stelle, wo bei Verzeichnissen ein "d" steht, die Symlinks ein "l" haben und dass in der letzten Spalte etwas in der Form Datei1 -> Datei2 steht. Beim Kopieren symbolischer Links mit cp muss man beachten, dass in der Standardeinstellung diese dereferenziert werden, also die Zieldatei anstelle des Links kopiert wird. Möchte man dies nicht, muss man beachten, ob der Symlink eventuell relativ gesetzt wurde, da hierdurch das Ziel unter Umständen anschließend fehlen könnte. Im Gegensatz zu den Hardlinks ist bei den Symlinks ein fehlendes Ziel jedoch möglich.
Im folgenden Beipiel wird eine leere Datei "test1" angelegt, ein harter Link "test2" hinzugefügt, anschließend noch ein Symlink "test3"->"test2" ergänzt und das Ergebnis ausgegeben. Danach wird die Datei "test2" gelöscht und nochmals das Verzeichnis ausgegeben:
# touch test1
# ln test1 test2
# ln -s test2 test3
# ls -ali
Ergebnis:
8196 -rw-r--r--  2 root root    0 2006-10-25 05:36 test1
8196 -rw-r--r--  2 root root    0 2006-10-25 05:36 test2
8197 lrwxrwxrwx  1 root root    5 2006-10-25 05:36 test3 -> test2
# rm test2
# ls -ali
8196 -rw-r--r--  1 root root    0 2006-10-25 05:36 test1
8197 lrwxrwxrwx  1 root root    5 2006-10-25 05:36 test3 -> test2
In dem Beispiel sind die wichtigen oben erklärten Punkte fett hervorgehoben, also die Anzahl der Referenzen auf die Inode und das SymLink-"l". Die Farbgebung der Ausgabe entspricht dem Standard, für die ls-Farbausgabe (falls aktiviert).
Nachfolgend kommt die unter der GPL stehende Original-Version der Manpage zum Befehl ln.

NAME

ln - setzt Verknüpfungen zwischen Dateien

ÜBERSICHT

ln [OPTION]... ZIEL [VERKNÜPFUNGSNAME]
ln [OPTION]... ZIEL... VERZEICHNIS
ln [OPTION]... --target-directory=VERZEICHNIS ZIEL...

BESCHREIBUNG

Erzeugen einer Verknüpfung des angegebenen ZIELES mit optionaler VERKNÜPFUNG. Wenn mehr als ein ZIEL angegeben wird, muss das letzte Argument ein Verzeichnis sein. Erzeugen von Verknüpfungen für jedes ZIEL in VERZEICHNIS. Als Standardvorgabe werden harte Verknüpfungen erstellt, symbolische Verknüpfungen mit --symbolic. Beim Erzeugen von harten Verknüpfungen muss jedes ZIEL existieren.

Optionen

--backup=[KONTROLLE] Erzeugen von Sicherungen für vorhandene Zieldateien.
-b Wie --backup, akzeptiert aber kein Argument.
-d, -F, --directory Verzeichnisse hart verknüpfen. (Nur Super-User)
-f, --force Vorhandene Ziele entfernen.
-n, --no-dereference Behandeln eines Zieles, das eine symbolische Verknüpfung auf ein Verzeichnis ist, wie normale Datei.
-i, --interactive Nachfrage vor Entfernen vorhandener Ziele.
-s, --symbolic Symbolische statt harter Verknüpfung erzeugen.
-S, --suffix=SUFFIX Überschreiben der normalen Anhänge für Sicherungen.
--target-directory=VERZ Angabe des VERZeichnisses, in dem die Verknüpfungen erstellt werden sollen.
-v, --verbose Ausgabe des Namens jeder Datei vor dem Verknüpfen.
--help Anzeigen einer kurzen Hilfe und beenden.
--version Ausgabe der Versionsinformation und beenden.
Der Anhang für Sicherheitskopien ist ~, außer wenn er --suffix oder SIMPLE_BACKUP_SUFFIX gesetzt wurde. Die Versionskontrolle kann mit --backup oder VERSION_CONTROL gesetzt werden. Mögliche Werte sind:
none, off Niemals Sicherung erzeugen (selbst wenn --backup angegeben wurde)
numbered, t Erzeugen von nummerierten Sicherheitskopien
existing, nil Nummeriert wenn nummerierte Backups existieren, sonst einfach.
simple, never Immer einfache Sicherheitskopien erzeugen

AUTOR

Geschrieben von Mike Parker and David MacKenzie.

BUGS MELDEN

Berichten Sie Fehler an bug-fileutils@gnu.org .

COPYRIGHT

Copyright (C) 2001 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen.
Es gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.
ln (fileutils) 4.1 Mai 2001 LN(1)