In Ihrem Linux-Dateisystem ist ein Link eine Verbindung zwischen einem Dateinamen und den eigentlichen Daten auf der Festplatte. Es gibt zwei Haupttypen von Links, die erstellt werden können: “harte” Links und “weiche” oder symbolische Links. Feste Links sind Low-Level-Links, die das System verwendet, um Elemente des Dateisystems selbst zu erstellen, z. B. Dateien und Verzeichnisse.
Die meisten Benutzer möchten keine harten Links selbst erstellen oder ändern, aber symbolische Links sind ein nützliches Werkzeug für jeden Linux-Benutzer. Ein symbolischer Link ist eine spezielle Datei, die auf eine andere Datei oder ein anderes Verzeichnis verweist, das als Ziel bezeichnet wird. Einmal erstellt, kann anstelle des Zieldateinamens ein symbolischer Link verwendet werden. Es kann einen eindeutigen Namen haben und sich in einem beliebigen Verzeichnis befinden. Es können sogar mehrere symbolische Links zu derselben Zieldatei erstellt werden, sodass auf das Ziel unter mehreren Namen zugegriffen werden kann.
Der symbolische Link ist eine eigenständige Datei, die jedoch keine Kopie der Daten der Zieldatei enthält. Es ist ähnlich wie bei einer Verknüpfung in Microsoft Windows: Wenn Sie einen symbolischen Link löschen, bleibt das Ziel unberührt. Auch wenn das Ziel eines symbolischen Links gelöscht, verschoben oder umbenannt wird, wird der symbolische Link nicht aktualisiert. In diesem Fall wird der symbolische Link als „kaputt“ oder „verwaist“ bezeichnet und funktioniert nicht mehr als Link.
So erstellen Sie symbolische Links mit einem Dateimanager
Eine Möglichkeit, einen symbolischen Link in der X-Windows-GUI zu erstellen, bietet Ihr Dateimanager. Einige Linux-Distributionen verwenden unterschiedliche Dateimanager, aber der Prozess ist ähnlich. Suchen Sie eine Zieldatei in Ihrer Dateimanager-GUI, markieren Sie sie, indem Sie einmal darauf klicken, und wählen Sie die Option „Link erstellen“. Diese Option finden Sie normalerweise im Menü „Bearbeiten“ oder im Kontextmenü, das erscheint, wenn Sie mit der rechten Maustaste auf die markierte Datei klicken.
In dem oben gezeigten Beispiel haben wir mit dem Thunar-Dateimanager die Datei myfile.txt markiert und dann Make Link im Menü Edit ausgewählt. Nach Abschluss wird ein neuer symbolischer Link namens link to myfile.txt erstellt. Dieser Link kann umbenannt oder an einen anderen Ort verschoben werden. Es zeigt immer auf das Ziel, es sei denn, das Ziel wird später verschoben oder gelöscht, wodurch der Link verwaist.
So erstellen Sie symbolische Links über die Befehlszeile
Die Befehlszeile ist ein mächtiges Werkzeug in Linux, weil sie Ihnen mehr Kontrolle über Ihre Befehle gibt. (Weitere Informationen zur Befehlszeile und zum Zugriff von Linux aus finden Sie in unserem Linux- und Unix-Shell-Tutorial).
Sie können symbolische Links mit der Option -s des Befehls ln erstellen. Die allgemeine Syntax zum Erstellen eines symbolischen Links lautet:
ln -s target linkname
Wenn wir zum Beispiel eine Datei namens myfile.txt in unserem Arbeitsverzeichnis haben und einen symbolischen Link namens mylink in demselben Verzeichnis erstellen möchten, könnten wir den Befehl verwenden:
ln -s myfile.txt mylink
In diesem Befehl haben wir eine Terminalsitzung geöffnet, die uns zur Eingabeaufforderung unserer Shell bringt. Wir sind in einem System namens myhost als Benutzer namens Benutzer angemeldet, und unser Arbeitsverzeichnis ist ein Ordner in unserem Home-Verzeichnis namens myfolder:
Lassen Sie uns zunächst ls mit der Option -l verwenden, um eine lange Liste aller Dateien in unserem Verzeichnis zu erstellen:
Wir sehen unsere Datei myfile.txt, die einzige Datei im Verzeichnis. (“Gesamt 4” bezieht sich darauf, wie viele Blöcke auf der Festplatte von den aufgelisteten Dateien verwendet werden, nicht auf die Gesamtzahl der Dateien).
Lassen Sie uns den cat-Befehl verwenden, um den Inhalt von myfile.txt anzuzeigen:
Lassen Sie uns nun mit dem Befehl ln -s einen symbolischen Link zu mylink.txt mit dem Namen mylink erstellen:
Es scheint, als wäre nichts passiert, aber das bedeutet, dass es wie erwartet funktioniert hat. Wenn ein Fehler aufgetreten ist oder ein unerwarteter Zustand aufgetreten ist, erhalten wir eine Benachrichtigung.
Wenn wir jetzt ein weiteres ls -l ausführen, sehen wir zwei Dateien – unser Ziel und unseren Link:
Einer der Vorteile einer langen Auflistung mit “-l” besteht darin, dass wir zusätzlich zum Dateinamen zusätzliche Informationen sehen. Beachten Sie das “l” am Anfang der Zeile, die unseren Linknamen enthält, was darauf hinweist, dass die Datei ein symbolischer Link ist. Außerdem steht nach mylink (in blauer Schrift) das Symbol „->“, gefolgt vom Namen des Ziels.
Die meisten Shells sind standardmäßig so konfiguriert, dass bestimmte Dateitypen in verschiedenen Farben angezeigt werden, aber Ihr Terminal zeigt möglicherweise andere Farben oder gar keine an.
Lassen Sie uns nun unseren symbolischen Link verwenden. Wenn wir cat darauf ausführen, zeigt es den Inhalt von myfile.txt an:
Wir können unseren Link mit mv umbenennen, und er zeigt immer noch auf dasselbe Ziel:
Aber was passiert, wenn wir unseren Link woanders hin verschieben? In diesem Fall bricht unser Link ab. Wir können dies sehen, indem wir mit mkdir ein neues Verzeichnis erstellen und den Link mit mv in das neue Verzeichnis verschieben:
Sie können sehen, dass unser Link rot hervorgehoben wird, wenn wir den Inhalt des Verzeichnisses newfolder mit ls -l anzeigen, was darauf hinweist, dass es sich um einen defekten Link handelt. Wenn wir versuchen, den Inhalt des Links zu kategorisieren, teilt uns die Shell mit, dass die Datei nicht existiert. Es zeigt auf “myfile.txt” ohne weitere Pfadinformationen. Daher sucht das Betriebssystem nach myfile.txt im selben Verzeichnis wie der Link.
Beginnen wir von vorne, indem wir newfolder und seinen Inhalt mit dem Befehl rm -r entfernen:
Lassen Sie uns diesmal den symbolischen Link mit dem absoluten Pfad zu myfile.txt erstellen. Lassen Sie uns den Namen unseres Arbeitsverzeichnisses mit pwd überprüfen:
Unser Arbeitsverzeichnis ist /home/user/myfolder, also fügen wir dies in den Zielnamen ein, wenn wir den Link erstellen:
Wie Sie der Ausgabe von ls -l entnehmen können, zeigt unser Link nun auf die Datei /home/user/myfolder/myfile.txt. Mit diesen Pfadinformationen können wir den Link an eine andere Stelle verschieben, und er zeigt immer noch auf unser Ziel:
Ihre Bash-Shell speichert eine Umgebungsvariable namens $PWD, die immer den Wert Ihres Arbeitsverzeichnisses speichert. Sie können diese Variable verwenden, um den vollständigen Pfad vor Ihrem Zielnamen einzufügen, solange sich das Ziel in Ihrem Arbeitsverzeichnis befindet. Wir können den Wert von $PWD mit dem echo-Befehl anzeigen:
Dieser Text wird eingefügt, wenn wir $PWD als Teil eines Befehls verwenden. Es ist eine gute Idee, es in Anführungszeichen als “$PWD” einzuschließen, falls der Verzeichnisname Leerzeichen enthält. Die Anführungszeichen stellen sicher, dass die Shell weiß, dass sie Teil des Pfadnamens und keine Befehlstrennzeichen sind.
Hier ist unser Befehl und eine Verzeichnisliste, die zeigt, dass es funktioniert hat:
Beachten Sie, dass wir auch einen Schrägstrich (“/”) direkt zwischen “$PWD” und myfile.txt einfügen, um den vollständigen Pfadnamen zu vervollständigen.