ln(1) ln(1)
NAME
ln - Verweis auf eine Datei eintragen (link)
SYNTAX
ln [option] datei verweis Format 1
ln [option] datei ... verzeichnis Format 2
ln -s [--] name verweis Format 3
ln -s [--] name ... verzeichnis Format 4
BESCHREIBUNG
ln erzeugt Verweise auf vorhandene Dateien oder Verzeichnisse. Sie
können dann auf diese Dateien bzw. Verzeichnisse mit verschiedenen
Namen bzw. Pfadnamen zugreifen (siehe ARBEITSWEISE).
Um mit ln einen Verweis zu erzeugen, benötigen Sie Schreibrecht für
das Verzeichnis, in das der Verweis eingetragen werden soll.
Es gibt zwei verschiedene Verweisarten:
- Der einfache Verweis (hard link):
Wenn Sie einen einfachen Verweis auf eine Datei erzeugen, dann ist
diese Datei als Eintrag mehrmals in einem Verzeichnis bzw. einmal
oder mehrmals in verschiedenen Verzeichnissen vorhanden; physisch
existiert diese Datei aber nur einmal. Der Indexeintrag jeder Datei
enthält einen Verweiszähler; erst wenn alle Verweise auf eine Datei
gelöscht sind, wird die Datei selbst gelöscht.
Mit einem einfachen Verweis können Sie nicht auf Verzeichnisse oder
Dateien in anderen Dateisystemen verweisen.
- Der symbolische Verweis (symbolic link):
Ein symbolischer Verweis ist eine Datei, die einen Pfadnamen ent-
hält. Wenn die Shell auf einen Dateinamen stößt, der zu einem sym-
bolischen Verweis gehört, ersetzt sie diesen Namen durch den ange-
gebenen Pfadnamen. Sie greifen also nicht auf den symbolischen Ver-
weis zu, sondern auf die Datei, zu der der Pfadname führt. Symboli-
sche Verweise können Sie auf beliebige Dateien oder Verzeichnisse
über Dateisystemgrenzen hinaus einrichten.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
OPTIONEN
Format 1: Einfachen Verweis eintragen
ln [option] datei verweis
ln erzeugt den Verweis verweis auf die Datei datei. Die Datei ist dann
sowohl unter dem Namen datei als auch unter dem Namen verweis
ansprechbar.
Keine Option angegeben:
Existiert bereits eine Datei mit dem Namen, den der zu erzeugende
Verweis erhalten soll, dann gibt ln eine Fehlermeldung aus. Die
existierende Datei wird nicht überschrieben.
Dies entspricht der alten Option -n, die aus Kompatibilitätsgrün-
den weiterhin unterstützt wird.
-f (f - force) Existiert bereits eine Datei mit dem Namen verweis,
dann erzeugt ln den Verweis ohne Rückfrage. War verweis der ein-
zige Verweis auf die ursprüngliche Datei, ist nach der Ausführung
von ln der zugehörige Dateiinhalt gelöscht.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
beginnt.
datei
Name der Datei, für die Sie einen Verweis erzeugen möchten. Die
Datei muß vorhanden sein. Für datei dürfen Sie kein Verzeichnis
angeben.
verweis
Name des Verweises, den Sie für datei eintragen möchten. Sie kön-
nen für verweis einen einfachen Dateinamen oder einen absoluten
oder relativen Pfadnamen angeben.
Einfacher Dateiname:
ln trägt den einfachen Dateinamen verweis in das aktuelle Ver-
zeichnis ein.
Absoluter oder relativer Pfadname präfix/verweis:
ln trägt den einfachen Dateinamen verweis in das Verzeichnis
präfix ein.
Wenn das übergeordnete Verzeichnis von verweis schreibbar ist, aber
das t-Bit (sticky-Bit) gesetzt hat, muß eine der folgenden Bedingungen
erfüllt sein, um verweis anzulegen:
- die Datei muß dem Benutzer gehören
- das Verzeichnis muß dem Benutzer gehören
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
- der Benutzer muß Schreibberechtigung für die Datei haben
- der Benutzer muß ein privilegierter Benutzer sein
ln in dieser Form legt keine Verweise über Dateisystemgrenzen hinweg
an. Verweise über Dateisystemgrenzen hinweg können Sie mit der Option
-s einrichten (siehe Format 3 und Format 4).
Format 2: Einfache Verweise unter dem gleichen Namen in ein anderes Ver-
zeichnis eintragen
ln [option] datei ... verzeichnis
ln trägt für jede angegebene Datei datei einen Verweis in das angege-
bene Verzeichnis ein. Die Datei ist dann in zwei verschiedenen Ver-
zeichnissen unter dem gleichen einfachen Dateinamen ansprechbar.
Keine Option angegeben:
Existiert bereits eine Datei mit dem Namen, den der zu erzeugende
Verweis erhalten soll, dann gibt ln eine Fehlermeldung aus. Die
existierende Datei wird nicht überschrieben.
Dies entspricht der alten Option -n, die aus Kompatibilitätsgrün-
den weiterhin unterstützt wird.
-f (f - force) Existiert in verzeichnis bereits eine Datei mit dem
Namen datei, dann erzeugt ln den Verweis ohne Rückfrage. War
datei der einzige Verweis auf die ursprüngliche Datei, ist nach
der Ausführung von ln der zugehörige Dateiinhalt gelöscht.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
beginnt.
datei
Name der Datei, für die Sie einen Verweis erzeugen möchten. Die
Datei muß vorhanden sein. Ein Verzeichnis dürfen Sie nicht ange-
ben. Pro Aufruf können Sie mehrere Dateinamen angeben. Sie können
für datei einen einfachen Dateinamen oder einen absoluten oder
relativen Pfadnamen angeben.
Einfacher Dateiname:
ln trägt in verzeichnis den Verweis datei ein.
Absoluter oder relativer Pfadname präfix/name:
ln trägt in verzeichnis den einfachen Dateinamen name ein.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
verzeichnis
Name des Verzeichnisses, in das Sie einen Verweis eintragen möch-
ten. Das Verzeichnis muß existieren.
ln in dieser Form legt keine Verweise über Dateisystemgrenzen
hinweg an.
Format 3: Symbolischen Verweis eintragen
ln -s[-] name verweis
ln -s erzeugt einen symbolischen Verweis verweis auf name, wobei name
eine Datei oder ein Verzeichnis sein kann. Die Besonderheit von ln -s
liegt darin, daß über verschiedene Dateisysteme hinweg verwiesen wer-
den kann, was bei einfachen Verweisen nicht möglich ist.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn name mit -
beginnt.
name Name der Datei oder des Verzeichnisses, für das Sie einen symbo-
lischen Verweis erzeugen möchten. Für name kann ein beliebiger
Pfadname angegeben werden, der nicht existieren muß. name kann in
einem anderen Dateisystem als verweis liegen.
verweis
Name des symbolischen Verweises, den Sie für name einrichten
möchten. Sie können für verweis einen einfachen Dateinamen oder
einen absoluten oder relativen Pfadnamen angeben.
Einfacher Dateiname:
ln trägt den einfachen Dateinamen verweis als symbolischen Ver-
weis in das aktuelle Verzeichnis ein.
Absoluter oder relativer Pfadname präfix/verweis:
ln trägt den einfachen Dateinamen verweis in das Verzeichnis
präfix ein.
Existiert bereits eine Datei mit dem Namen verweis, erfolgt eine
Fehlermeldung (siehe FEHLERMELDUNGEN); die bereits existierende
Datei wird nicht überschrieben.
Format 4: Symbolische Verweise unter dem gleichen Namen in ein anderes
Verzeichnis eintragen
ln -s[-] name ... verzeichnis
ln trägt für jede angegebene Datei oder jedes angegebene Verzeichnis
name einen symbolischen Verweis in das angegebene Verzeichnis
verzeichnis ein.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
ln legt Verweise über Dateisystemgrenzen hinweg an.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn name mit -
beginnt.
name Name der Datei oder des Verzeichnisses, für das Sie einen symbo-
lischen Verweis erzeugen möchten. Pro Aufruf können Sie mehrere
Namen angeben. Sie können für name einen absoluten oder relativen
Pfadnamen angeben.
Absoluter oder relativer Pfadname präfix/name:
ln trägt in verzeichnis den einfachen Dateinamen name als Verweis
auf präfix/name ein.
Existiert in verzeichnis bereits eine Datei mit dem gleichen ein-
fachen Dateinamen wie name, erfolgt eine Fehlermeldung (siehe
FEHLERMELDUNGEN); die bereits existierende Datei wird nicht über-
schrieben.
verzeichnis
Name des Verzeichnisses, in das die symbolischen Verweise einge-
tragen werden sollen. Das Verzeichnis muß existieren.
ARBEITSWEISE
Einfache Verweise
Wenn ln einen Verweis auf eine Datei erzeugt, dann wird der zum Ver-
weis gehörige einfache Dateiname in das entsprechende Verzeichnis ein-
getragen. Der Eintrag erhält die gleiche Indexnummer wie der alte
Dateiname. Für beide Dateinamen ist also der gleiche Indexeintrag gül-
tig (und damit sind auch Zugriffsrechte, Eigentümer, Daten usw. iden-
tisch). Die Datei, auf die sich die Dateinamen beziehen, ist physisch
nur einmal vorhanden. Sie können nun ein und dieselbe Datei unter ver-
schiedenen Namen bzw. Pfadnamen ansprechen (siehe Beispiel 1).
An der Indexnummer können Sie erkennen, ob zwei Dateinamen auf die-
selbe Datei verweisen (siehe ls -i). Der Verweiszähler gibt an, wie
viele Verweise auf die Datei bestehen, d. h. wie viele Verzeichnis-
Einträge für die Datei existieren (siehe ls -l).
Mit rm löschen Sie den Eintrag im Verzeichnis. Bestanden auf die Datei
mehrere Verweise, so ist sie unter den nicht gelöschten Namen weiter-
hin ansprechbar. Erst mit dem letzten Verweis löscht rm die Datei.
Symbolische Verweise
Ein symbolischer Verweis ist eine Datei, die einen Pfadnamen enthält.
Diesen Pfadnamen können Sie mit dem Kommando ls -l lesen. Wenn die
Shell einen Dateinamen findet, der zu einem symbolischen Verweis
gehört, ersetzt sie diesen Namen durch den angegebenen Pfadnamen. Ein
Pfadname wird also auf einen anderen abgebildet. Hier gibt es keinen
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
Verweiszählmechanismus; mit dem symbolischen Verweis wird die Datei
gelöscht, die den Pfadnamen enthält.
Bei einem symbolischen Verweis enthält der Indexeintrag der Datei, auf
die verwiesen wird, keine Information über diese Tatsache. Der Ver-
weiszähler zählt nur die einfachen Verweise. Wenn Sie also das Ziel
eines symbolischen Verweises löschen, existiert der symbolische Ver-
weis zwar immer noch, aber er verweist auf eine Datei ohne Inhalt und
Indexeintrag.
Symbolische Verweise sind nicht an Dateisystemgrenzen gebunden. Der
Pfadname kann der Name einer Datei oder eines Verzeichnisses sein.
Symbolische Verweise können mit dem ls-Kommando sichtbar gemacht wer-
den:
- Mit dem Kommando ls -l stellen Sie fest, welche Dateien im angege-
benen Verzeichnis symbolische Verweise sind. Außerdem können Sie
mit diesem Kommando den Inhalt dieser Dateien lesen. Das ist der
Pfadname, der auf das Zeichen "->" folgt.
- Mit dem Kommando ls -L erhalten Sie Informationen über die Datei,
auf die der symbolische Verweis zeigt.
Operationen in symbolisch verwiesenen Verzeichnissen, die ".."
beinhalten, wie z. B. "cd ..", referenzieren das Originalverzeich-
nis!
FEHLERMELDUNGEN
ln: no permission for verweis
ln kann den Verweis verweis nicht anlegen, da Sie für das Verzeichnis,
in das der Verweis eingetragen werden soll, kein Schreibrecht besitzen.
ln: cannot access datei
ln kann auf datei nicht zugreifen, da sie nicht existiert oder da Sie
für ein Verzeichnis, das im Pfadnamen datei vorkommt, kein Ausführ-
recht (x-Bit) besitzen.
ln: <verz> directory
Anstelle einer Datei haben Sie das Verzeichnis verz angegeben. ln
erzeugt jedoch nur Verweise auf einfache Dateien, Gerätedateien und
FIFO-Dateien, nicht aber auf Verzeichnisse.
ln: different file system
Sie wollten einen Verweis erzeugen und in einem anderen Dateisystem
eintragen, als sich die betreffende Datei befindet. ln erzeugt jedoch
keine Verweise über Dateisystemgrenzen hinweg. Versuchen Sie es mit
der Option -s.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
ln: cannot create datei
ln: File exists
Sie haben versucht, in einem Verzeichnis einen Verweis datei anzule-
gen, wobei datei in dem betreffenden Verzeichnis bereits existiert.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Antwort auf Ja/Nein-Abfragen muß in der jeweils definierten Spra-
chumgebung erfolgen.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Beispiel 1
Der Benutzer Max besitzt die Dateien bolte und laempel; sie stehen im
Verzeichnis /home/max. Nun soll auch Moritz mit diesen Dateien arbei-
ten. Damit Moritz weiterhin in seinem eigenen Verzeichnis /home/moritz
arbeiten kann und dort nicht immer die langen Pfadnamen eingeben muß,
legt Moritz im Verzeichnis /home/moritz Verweise auf diese Dateien an.
Voraussetzung dafür ist, daß Moritz
- für sein Verzeichnis /home/moritz Schreibrecht hat
- für das Verzeichnis /home/max Ausführrecht (x-Bit) hat.
Um die Dateien lesen und verändern zu können, benötigt Moritz außerdem
Lese- und Schreibrecht für die Dateien. Im Beispiel ist das erfüllt,
wenn Moritz der Gruppe proj angehört (siehe unten). Am schnellsten
legt Moritz die Verweise mit einem ln-Aufruf gemäß Format 2 an:
$ ln /home/max/bolte /home/max/laempel /home/moritz
Dasselbe leisten die folgenden zwei ln-Aufrufe in Format 1:
$ ln /home/max/bolte /home/moritz/bolte
$ ln /home/max/laempel /home/moritz/laempel
Wie die folgenden ls-Aufrufe zeigen, hat ln die Dateinamen bolte und
laempel in das Verzeichnis /home/moritz eingetragen. Der Verweiszähler
für die Dateien wurde auf 2 erhöht (ls -l). Den bolte- bzw. laempel-
Dateinamen wurde jeweils die gleiche Indexnummer zugeordnet (ls -i).
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
$ ls -l /home/moritz
total 6
-rw-rw---- 2 max proj 34 Mar 09 15:08 bolte
-rw-rw---- 2 max proj 1217 Mar 09 18:59 laempel
$ ls -i /home/max/bolte /home/moritz/bolte
16435 /home/max/bolte 16435 /home/moritz/bolte
$ ls -i /home/max/laempel /home/moritz/laempel
24766 /home/max/laempel 24766 /home/moritz/laempel
Der obige Aufruf ls -l zeigt auch, daß Max Eigentümer der Dateien
bleibt. Max kann Moritz jederzeit die Erlaubnis, mit den Dateien zu
arbeiten, entziehen, z. B. mit
$ chmod 600 bolte laempel
Will Moritz für die beiden Dateien nicht gleichnamige, sondern anders-
lautende Verweise anlegen, muß er ln wie folgt im Format 1 aufrufen:
$ ln /home/max/bolte /home/moritz/spitz
$ ln /home/max/laempel /home/moritz/pfeife
Beispiel 2
Der Benutzer Norbert will von seinem Verzeichnis /home/norbert mög-
lichst einfach auf das Verzeichnis /home2/andrea seiner Kollegin
Andrea zugreifen. Er erstellt deshalb einen symbolischen Verweis durch
einen Aufruf von ln im Format 3.
$ ln -s /home2/andrea /home/norbert/and
Der Benutzer Norbert kann nun von seinem Verzeichnis /home/norbert aus
über den symbolischen Verweis and direkt auf Andreas Verzeichnis
zugreifen, obwohl sich dieses in einem anderen Dateisystem befindet:
$ ls -lL and
total 16
drwxr-xr-x 2 andrea usrother 2560 Feb 27 13:20 PASCAL
drwxr-xr-x 2 andrea usrother 2048 Mar 5 17:32 KURSE
drwxr-xr-x 2 andrea usrother 512 Mar 5 12:07 BRIEFE
drwxr-xr-x 2 andrea usrother 512 Feb 26 10:05 bin
-rw-r-xr-x 1 andrea usrother 148 Feb 20 09:28 test
Beispiel 3
Der Benutzer Norbert hat in seinem Verzeichnis /home/norbert die Ver-
zeichnisse briefe89, briefe90 und briefe91 angelegt:
$ ls /home/norbert
briefe89 briefe90 briefe91
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
ln(1) ln(1)
Er will nun von seinem Verzeichnis /home/norbert/briefe91 ohne Umwege
auf die beiden anderen Verzeichnisse zugreifen. Hierzu legt er zwei
symbolische Verweise durch einen Aufruf von ln im Format 4 an:
$ cd /home/norbert
$ ln -s /home/norbert/briefe89 /home/norbert/briefe90 briefe91
$ cd briefe91
$ ls -og briefe??
lrwxrwxrwx 1 25 Mar 6 12:42 briefe89 -> /home/norbert/briefe89
lrwxrwxrwx 1 25 Mar 6 12:42 briefe90 -> /home/norbert/briefe90
$ ls briefe90
angebot brief.huber brief.maier text
SIEHE AUCH
chmod(1), cp(1), find(1), ls(1), mv(1), pax(1), rm(1), link(2),
readlink(2), stat(2), symlink(2).
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98