Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

ln - Verweis auf eine Datei eintragen

&pagelevel(4)&pagelevel

(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
Format 1: 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, 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.


option

-f

(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.

-n

Existiert bereits eine Datei mit dem Namen verweis, dann wird der Inhalt der Datei nicht überschrieben.
Die Option -f überlagert die Option -n.

datei

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.

verweis

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:
ln trägt den einfachen Dateinamen verweis in das aktuelle Dateiverzeichnis ein.

absoluter oder relativer Pfadname präfix/verweis:
ln trägt den einfachen Dateinamen verweis in das Dateiverzeichnis präfix ein.

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:

  • die Datei muss dem Benutzer gehören

  • das Dateiverzeichnis muss dem Benutzer gehören

  • der Benutzer muss Schreibberechtigung für die Datei haben

  • der Benutzer muss 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).

Einfache Verweise unter gleichem Namen in ein anderes Dateiverzeichnis eintragen
Format 2: ln[ option] datei ... dateiverzeichnis


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!
Ist die Standard-Eingabe keine Datensichtstation, dann unterbleibt die Frage und der Verweis wird nicht erzeugt.


option

-f

(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.

-n

Existiert in dateiverzeichnis bereits eine Datei mit dem Namen datei, dann wird der Inhalt der Datei nicht überschrieben.
Die Option -f überlagert die Option -n.

datei

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:
ln trägt in dateiverzeichnis den Verweis datei ein.

absoluter oder relativer Pfadname präfix/name:
ln trägt in dateiverzeichnis den einfachen Dateinamen name ein.

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).

dateiverzeichnis

Name des Dateiverzeichnisses, in das Sie einen Verweis eintragen möchten. Das
Dateiverzeichnis muss existieren.


ln in dieser Form legt keine Verweise über Dateisystemgrenzen hinweg an.

Symbolischen Verweis eintragen
Format 3: ln -s name verweis


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

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.

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 Verweis in das aktuelle Dateiverzeichnis ein.

absoluter oder relativer Pfadname präfix/verweis:
ln trägt den einfachen Dateinamen verweis in das Dateiverzeichnis präfix ein.

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
Format 4: ln -s name ... dateiverzeichnis


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

Name der Datei oder des Dateiverzeichnisses, für das Sie einen symbolischen 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 dateiverzeichnis den einfachen Dateinamen name als Verweis auf präfix/name ein.

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.

dateiverzeichnis

Name des Dateiverzeichnisses, in das die symbolischen Verweise eingetragen werden sollen. Das Dateiverzeichnis muss existieren.

Arbeitsweise

  • Einfache Verweise

    Wenn ln einen Verweis auf eine Datei erzeugt, dann wird der zum Verweis gehörige einfache Dateiname in das entsprechende Dateiverzeichnis eingetragen. Der Eintrag erhält die gleiche Index-Nummer wie der alte Dateiname. Für beide Dateinamen ist also der gleiche Index-Eintrag gültig (und damit sind auch Zugriffsrechte, Eigentümer, Daten usw. identisch). Die Datei, auf die sich die Dateinamen beziehen, ist physikalisch nur einmal vorhanden. Sie können nun ein und dieselbe Datei unter verschiedenen Namen bzw. Pfadnamen ansprechen (siehe Beispiel 1).

    An der Index-Nummer können Sie erkennen, ob zwei Dateinamen auf dieselbe Datei verweisen (siehe ls -i). Der Verweiszähler gibt an, wie viele Verweise auf die Datei bestehen, d.h. wie viele Dateiverzeichnis-Einträge für die Datei existieren (siehe ls -l).

    Mit rm löschen Sie den Eintrag im Dateiverzeichnis. Bestanden auf die Datei mehrere Verweise, so ist sie unter den nicht gelöschten Namen weiterhin 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 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 Verweiszähler zählt nur die einfachen Verweise. Wenn Sie also das Ziel eines symbolischen Verweises löschen, existiert der symbolische Verweis 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 Dateiverzeichnisses sein.

    Symbolische Verweise können mit dem ls-Kommando sichtbar gemacht werden:

    • Mit dem Kommando ls -l stellen Sie fest, welche Dateien im angegebenen Dateiverzeichnis 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 Dateiverzeichnissen, die ’..’ beinhalten, wie z.B. ’cd ..’, referenzieren das Original-Dateiverzeichnis!

Fehler

ln: Cannot link datei to verweis: Permission denied
ln kann den Verweis verweis nicht anlegen, da Sie für das Dateiverzeichnis, in das der Verweis eingetragen werden soll, kein Schreibrecht besitzen.


ln: cannot access datei: no such file or directory
ln kann auf datei nicht zugreifen, da sie nicht existiert oder da Sie für ein Dateiverzeichnis, das im Pfadnamen datei vorkommt, kein Ausführrecht (x-Bit) besitzen.


ln: dvz is a directory
Anstelle einer Datei haben Sie das Dateiverzeichnis dvz angegeben. ln erzeugt jedoch nur Verweise auf einfache Dateien, Gerätedateien und FIFO-Dateien, nicht aber auf Dateiverzeichnisse.


ln: are on different file systems

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.


ln: cannot create
ln: File exists

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

  • für sein Dateiverzeichnis /HOME/MORITZ Schreibrecht hat
  • für das Dateiverzeichnis /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 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).

$ 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, dass 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 anderslautende Verweise anlegen, muss er ln wie folgt im Format 1 aufrufen:

$ ln /HOME/MAX/bolte /HOME/MORITZ/spitz

$ ln /HOME/MAX/laempel /HOME/MORITZ/pfeife

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:

$ ls -l
total 3

-rw-r--r--   1  BERTA    other     57  Jul 17 14:29 brief

-r--r--r--   2  EMIL     other    103  Jul 16 15:30 liste
-r--r--r--   2  EMIL     other    103  Jul 16 15:30 text

Geben Sie nun ein:

$ ln brief liste

ln: liste: 444 mode (y/n) ?n

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:

$ ls -l
total 3

-rw-r--r--   1  BERTA    other     57  Jul 17 14:29 brief

-rw-rw-rw-   2  EMIL     other    103  Jul 16 15:30 liste
-rw-rw-rw-   2  EMIL     other    103  Jul 16 15:30 text

$ ln brief liste

$ ls -l
total 3

-rw-r--r--   2  BERTA    other     57  Jul 17 14:29 brief

-rw-r--r--   2  BERTA    other     57  Jul 17 14:29 liste
-rw-rw-rw-   1  EMIL     other    103  Jul 16 15:30 text

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.

$ ln brief text

$ ls -l
total 3

-rw-r--r--   3  BERTA    other     57  Jul 17 14:29 brief

-rw-r--r--   3  BERTA    other     57  Jul 17 14:29 liste
-rw-r--r--   3  BERTA    other     57  Jul 17 14:29 text

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.

$ ln -s /HOME2/ANDREA /HOME/NORBERT/and

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:

$ 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 4

Der Benutzer Norbert hat in seinem Dateiverzeichnis /HOME/NORBERT die Dateiverzeichnisse briefe89, briefe90 und briefe91 angelegt:

$ ls /HOME/NORBERT

briefe89 briefe90 briefe91


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:

$ 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, cp, ls, mv, rm

link(), readlink(), stat(), symlink() [4]