(link files)
ln erzeugt Verweise auf vorhandene Dateien oder Dateiverzeichnisse. Sie können dann auf diese Dateien bzw. Dateiverzeichnisse mit verschiedenen Namen bzw. Pfadnamen zugreifen (siehe Arbeitsweise).
Um mit ln einen Verweis zu erzeugen, benötigen Sie Schreibrecht für das Dateiverzeichnis, 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 Dateiverzeichnis bzw. einmal oder mehrmals in verschiedenenDateiverzeichnissen vorhanden; physikalisch 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 Dateiverzeichnisse oder Dateien in anderen Dateisystemen verweisen.Der symbolische Verweis (symbolic link):
Ein symbolischer Verweis ist eine Datei, die einen Pfadnamen enthält. Wenn die Shell auf einen Dateinamen stößt, der zu einem symbolischen Verweis gehört, ersetzt sie diesen Namen durch den angegebenen Pfadnamen. Sie greifen also nicht auf den symbolischen Verweis zu, sondern auf die Datei, zu der der Pfadname führt.
Symbolische Verweise können Sie auf beliebige Dateien oder Dateiverzeichnisse über Dateisystemgrenzen hinaus einrichten.
Syntax
Format 1: |
ln[ option] datei verweis |
Format 2: |
ln[ option] datei ... dateiverzeichnis |
Format 3: |
ln -s name verweis |
Format 4: |
ln -s name ... dateiverzeichnis |
Einfachen Verweis eintragen
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, und haben Sie für diese Datei kein Schreibrecht, dann gibt ln die Zugriffsrechte aus und fragt, ob es den Verweis erzeugen soll. ln erzeugt den Verweis nur dann, wenn Sie die Frage bejahen (siehe verweis und Beispiel 2). Achtung! Ist die Standard-Eingabe keine Datensichtstation, dann unterbleibt die Frage und der Verweis wird nicht erzeugt.
(f - force) Existiert bereits eine Datei mit dem Namen verweis, dann erzeugt ln den Verweis ohne Rückfrage, egal, ob Sie für die Datei Schreibrecht besitzen oder nicht.
Existiert bereits eine Datei mit dem Namen verweis, dann wird der Inhalt der Datei nicht überschrieben.
Name der Datei, für die Sie einen Verweis erzeugen möchten. Die Datei muss vorhanden sein. Für datei dürfen Sie kein Dateiverzeichnis angeben.
Name des Verweises, den Sie für datei eintragen möchten. Sie können für verweis einen einfachen Dateinamen oder einen absoluten oder relativen Pfadnamen angeben. einfacher Dateiname: absoluter oder relativer Pfadname präfix/verweis: Existiert bereits eine Datei mit dem Namen verweis und haben Sie für diese Datei Schreibrecht, dann erzeugt ln den Verweis ohne Rückfrage. Das heißt, mit dem Namen verweis wird dann nicht mehr die ursprüngliche Datei angesprochen, sondern die Datei datei. War verweis der einzige Verweis auf die ursprüngliche Datei, ist nach der Ausführung von ln der zugehörige Dateiinhalt gelöscht. Haben Sie für die Datei verweis kein Schreibrecht, dann fragt ln, ob es den Verweis erzeugen soll (siehe Option -f und Beispiel 2). Wenn das übergeordnete Dateiverzeichnis von verweis schreibbar ist, aber das t-Bit (sticky-Bit) gesetzt hat, muss eine der folgenden Bedingungen erfüllt sein, um verweis anzulegen:
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). Einfache Verweise unter gleichem Namen in ein anderes Dateiverzeichnis eintragen
ln trägt für jede angegebene Datei datei einen Verweis in das angegebene Dateiverzeichnis ein. Die Datei ist dann in zwei verschiedenen Dateiverzeichnissen unter dem gleichen einfachen Dateinamen ansprechbar. Keine Option angegeben Existiert bereits eine Datei mit dem Namen, den der zu erzeugende Verweis erhalten soll, und haben Sie für diese Datei kein Schreibrecht, dann gibt ln die Zugriffsrechte aus und fragt, ob es den Verweis erzeugen soll. ln erzeugt den Verweis nur dann, wenn Sie die Frage bejahen (siehe verweis und Beispiel 2). Achtung!
(f - force) Existiert in dateiverzeichnis bereits eine Datei mit dem Namen datei, dann erzeugt ln den Verweis ohne Rückfrage, egal, ob Sie für die Datei Schreibrecht besitzen oder nicht.
Existiert in dateiverzeichnis bereits eine Datei mit dem Namen datei, dann wird der Inhalt der Datei nicht überschrieben.
Name der Datei, für die Sie einen Verweis erzeugen möchten. Die Datei muss vorhanden sein. Ein Dateiverzeichnis dürfen Sie nicht angeben. 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: absoluter oder relativer Pfadname präfix/name: Existiert in dateiverzeichnis bereits eine Datei, die den gleichen einfachen Dateinamen wie datei hat, und haben Sie für diese Datei Schreibrecht, dann erzeugt ln den Verweis ohne Rückfrage. Das heißt, mit dem Verweis wird dann nicht mehr die ursprüngliche Datei angesprochen, sondern die Datei datei. War der Verweis der einzige Verweis auf die ursprüngliche Datei, ist nach der Ausführung von ln der zugehörige Dateiinhalt gelöscht. Haben Sie für die Datei, die bereits in dateiverzeichnis existiert, kein Schreibrecht, dann fragt ln, ob es den Verweis erzeugen soll (siehe Option -f und Beispiel 2).
Name des Dateiverzeichnisses, in das Sie einen Verweis eintragen möchten. Das ln in dieser Form legt keine Verweise über Dateisystemgrenzen hinweg an. Symbolischen Verweis eintragen
ln -s erzeugt einen symbolischen Verweis verweis auf name, wobei name eine Datei oder ein Dateiverzeichnis sein kann. Die Besonderheit von ln -s liegt darin, dass über verschiedene Dateisysteme hinweg verwiesen werden kann, was bei einfachen Verweisen nicht möglich ist.
Name der Datei oder des Dateiverzeichnisses, für das Sie einen symbolischen Verweis erzeugen möchten. Für name kann ein beliebiger Pfadname angegeben werden, der nicht existieren muss. name kann in einem anderen Dateisystem als verweis liegen.
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: absoluter oder relativer Pfadname präfix/verweis: Existiert bereits eine Datei mit dem Namen verweis, erfolgt eine Fehlermeldung (siehe Fehler); die bereits existierende Datei wird nicht überschrieben. Symbolische Verweise unter gleichem Namen in anderes Dateiverzeichnis eintragen
ln trägt für jede angegebene Datei oder jedes angegebene Dateiverzeichnis name einen symbolischen Verweis in das angegebene Dateiverzeichnis dateiverzeichnis ein. ln legt Verweise über Dateisystemgrenzen hinweg an.
Name der Datei oder des Dateiverzeichnisses, für das Sie einen symbolischen Verweis erzeugen möchten. Pro Aufruf können Sie mehrere Namen angeben. absoluter oder relativer Pfadname präfix/name: Existiert in dateiverzeichnis bereits eine Datei mit dem gleichen einfachen Dateinamen wie name, erfolgt eine Fehlermeldung (siehe Fehler); die bereits existierende Datei wird nicht überschrieben.
Name des Dateiverzeichnisses, in das die symbolischen Verweise eingetragen werden sollen. Das Dateiverzeichnis muss existieren. |
Arbeitsweise
|
Fehler
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 -s Option.
Sie haben versucht, über die Option -s in einem Dateiverzeichnis einen Verweis datei anzulegen, wobei datei in dem betreffenden Dateiverzeichnis bereits existiert. |
Internationale Umgebung
Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos ln: LANG Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden. LC_ALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen. LC_CTYPE Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung. LC_MESSAGES Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden. NLSPATH Legt den Pfad der Meldungsdateien für LC_MESSAGES fest. |
Beispiel 1
Der Benutzer Max besitzt die Dateien bolte und laempel; sie stehen im Dateiverzeichnis /HOME/MAX. Nun soll auch Moritz mit diesen Dateien arbeiten. Damit Moritz weiterhin in seinem eigenen Dateiverzeichnis /HOME/MORITZ arbeiten kann und dort nicht immer die langen Pfadnamen eingeben muss, legt Moritz im Dateiverzeichnis /HOME/MORITZ Verweise auf diese Dateien an. Voraussetzung dafür ist, dass Moritz
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).
Dasselbe leisten die folgenden zwei ln-Aufrufe in Format 1:
Wie die folgenden ls-Aufrufe zeigen, hat ln die Dateinamen bolte und laempel in das Dateiverzeichnis /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 Index-Nummer zugeordnet (ls -i).
Der obige Aufruf ls -l zeigt auch, dass Max Eigentümer der Dateien bleibt. Max kann Moritz jederzeit die Erlaubnis, mit den Dateien zu arbeiten, entziehen, z.B. mit
Will Moritz für die beiden Dateien nicht gleichnamige, sondern anderslautende Verweise anlegen, muss er ln wie folgt im Format 1 aufrufen:
|
Beispiel 2
Das folgende Beispiel zeigt, was bei einem ln-Aufruf ln datei verweis geschieht, wenn es bereits eine Datei namens verweis gibt. Im aktuellen Dateiverzeichnis sind drei Dateinamen eingetragen: brief, liste und text. brief verweist auf die Datei1, liste und text verweisen beide auf die Datei2. Für die Datei2 haben Sie kein Schreibrecht:
Geben Sie nun ein:
Da Sie mit n geantwortet haben, erzeugt ln den Verweis nicht. Wenn Sie für die Datei2 Schreibrecht haben, erzeugt ln den Verweis ohne Rückfrage:
Da ln den Verweis liste für die Datei brief (Datei1) erzeugt hat, verweist liste nun nicht mehr auf die Datei2, sondern auf die Datei1. text ist nun der einzige Verweis auf die Datei2.
Nun verweist auch text auf die Datei1. Damit ist die Datei2 gelöscht. |
Beispiel 3
Der Benutzer Norbert will von seinem Dateiverzeichnis /HOME/NORBERT möglichst einfach auf das Dateiverzeichnis /HOME2/ANDREA seiner Kollegin Andrea zugreifen. Er erstellt deshalb einen symbolischen Verweis durch einen Aufruf von ln im Format 3.
Der Benutzer Norbert kann nun von seinem Dateiverzeichnis /HOME/NORBERT aus über den symbolischen Verweis and direkt auf Andreas Dateiverzeichnis zugreifen, obwohl sich dieses in einem anderen Dateisystem befindet:
|
Beispiel 4
Der Benutzer Norbert hat in seinem Dateiverzeichnis /HOME/NORBERT die Dateiverzeichnisse briefe89, briefe90 und briefe91 angelegt:
Er will nun von seinem Dateiverzeichnis /HOME/NORBERT/briefe91 ohne Umwege auf die beiden anderen Dateiverzeichnisse zugreifen. Hierzu legt er zwei symbolische Verweise durch einen Aufruf von ln im Format 4 an:
|
Siehe auch
chmod, cp, ls, mv, rm link(), readlink(), stat(), symlink() [4] |