Einführung
Dieses Tutorial führt Sie durch den Prozess, das Ziel eines symbolischen Links auf Ihrem Linux-System zu finden. Symbolische Links, auch bekannt als Symlinks, sind spezielle Dateitypen, die als Verweise auf andere Dateien oder Verzeichnisse fungieren. Sie werden in Linux-Systemen häufig verwendet, um Verknüpfungen zu erstellen, Dateien zu organisieren und Softwareversionen zu verwalten.
Am Ende dieses Tutorials werden Sie in der Lage sein, symbolische Links zu identifizieren und die Dateien oder Verzeichnisse, auf die sie verweisen, mithilfe verschiedener Linux-Befehle zu bestimmen. Dieses Wissen ist für eine effektive Navigation und Verwaltung des Dateisystems in Linux-Umgebungen unerlässlich.
Symbolische Links verstehen
Symbolische Links (Symlinks) sind spezielle Dateien unter Linux, die auf andere Dateien oder Verzeichnisse zeigen. Sie funktionieren ähnlich wie Verknüpfungen in anderen Betriebssystemen, sind jedoch leistungsfähiger und tiefer in das Dateisystem integriert.
Beginnen wir damit, die symbolischen Links zu erkunden, die für dieses Tutorial eingerichtet wurden. Navigieren Sie zunächst in das Projektverzeichnis:
cd ~/project/symlink-tutorial
Lassen Sie uns nun die Dateien in diesem Verzeichnis auflisten, um zu sehen, was vorhanden ist:
ls -la
Sie sollten eine Ausgabe ähnlich dieser sehen:
total 20
drwxr-xr-x 3 labex labex 4096 Jul 15 10:00 .
drwxr-xr-x 3 labex labex 4096 Jul 15 10:00 ..
lrwxrwxrwx 1 labex labex 12 Jul 15 10:00 broken-link.txt -> ../nonexistent-file.txt
lrwxrwxrwx 1 labex labex 13 Jul 15 10:00 dir-link -> test-directory
lrwxrwxrwx 1 labex labex 13 Jul 15 10:00 nested-link.txt -> simple-link.txt
-rw-r--r-- 1 labex labex 35 Jul 15 10:00 original.txt
lrwxrwxrwx 1 labex labex 10 Jul 15 10:00 passwd-link -> /etc/passwd
lrwxrwxrwx 1 labex labex 12 Jul 15 10:00 simple-link.txt -> original.txt
drwxr-xr-x 2 labex labex 4096 Jul 15 10:00 test-directory
Beachten Sie, dass symbolische Links in der Auflistung anders dargestellt werden:
- Sie beginnen mit einem
lin den Dateiberechtigungen (erste Spalte). - Auf ihre Namen folgt ein Pfeil (
->), der auf ihr Ziel zeigt. - Sie haben typischerweise die Berechtigungen
lrwxrwxrwx.
Untersuchen wir die Datei simple-link.txt, die ein symbolischer Link auf original.txt ist. Sie können den Inhalt dieses Links mit dem Befehl cat anzeigen:
cat simple-link.txt
Ausgabe:
This is the original file content.
Obwohl Sie auf simple-link.txt zugreifen, sehen Sie tatsächlich den Inhalt von original.txt. So funktionieren symbolische Links – sie leiten den Zugriff transparent an ihr Ziel weiter.
Versuchen wir nun auch den symbolischen Link auf das Verzeichnis:
ls -la dir-link
Ausgabe:
total 12
drwxr-xr-x 2 labex labex 4096 Jul 15 10:00 .
drwxr-xr-x 3 labex labex 4096 Jul 15 10:00 ..
-rw-r--r-- 1 labex labex 42 Jul 15 10:00 test-file.txt
lrwxrwxrwx 1 labex labex 16 Jul 15 10:00 relative-link.txt -> ../original.txt
Wie Sie sehen können, sehen Sie beim Auflisten des Inhalts von dir-link tatsächlich den Inhalt des test-directory, auf das er verweist.
Den Befehl ls zum Identifizieren symbolischer Links verwenden
Der Befehl ls mit spezifischen Optionen ist eine der einfachsten Möglichkeiten, symbolische Links zu identifizieren und zu sehen, wohin sie zeigen. Lassen Sie uns verschiedene Möglichkeiten erkunden, ls für diesen Zweck zu verwenden.
Auflisten mit der Option -l
Die Option -l bietet eine detaillierte Auflistung, die den Link und sein Ziel anzeigt:
ls -l simple-link.txt
Ausgabe:
lrwxrwxrwx 1 labex labex 12 Jul 15 10:00 simple-link.txt -> original.txt
Der Pfeil (->) zeigt, dass simple-link.txt auf original.txt verweist.
Alle Dateien mit der Option -la auflisten
Die Kombination der Optionen -la listet alle Dateien (einschließlich versteckter) mit detaillierten Informationen auf:
ls -la
Dies zeigt alle Dateien im aktuellen Verzeichnis, einschließlich der symbolischen Links und ihrer Ziele.
Farblich gekennzeichnete Auflistung
Die meisten modernen Linux-Distributionen konfigurieren ls so, dass verschiedene Dateitypen in unterschiedlichen Farben angezeigt werden. Symbolische Links werden typischerweise in Hellblau oder Cyan dargestellt. Sie können Folgendes verwenden:
ls --color=always
Die Ausgabe zeigt symbolische Links in einer eigenen Farbe.
Nur symbolische Links auflisten
Sie können den Befehl find verwenden, um nur symbolische Links im aktuellen Verzeichnis aufzulisten:
find . -maxdepth 1 -type l
Ausgabe:
./broken-link.txt
./dir-link
./nested-link.txt
./passwd-link
./simple-link.txt
Dieser Befehl listet alle symbolischen Links im aktuellen Verzeichnis (.) auf, ohne in Unterverzeichnisse abzusteigen (-maxdepth 1).
Einen verschachtelten symbolischen Link untersuchen
Schauen wir uns nested-link.txt an, der auf einen anderen symbolischen Link verweist:
ls -l nested-link.txt
Ausgabe:
lrwxrwxrwx 1 labex labex 13 Jul 15 10:00 nested-link.txt -> simple-link.txt
Und simple-link.txt verweist auf:
ls -l simple-link.txt
Ausgabe:
lrwxrwxrwx 1 labex labex 12 Jul 15 10:00 simple-link.txt -> original.txt
nested-link.txt verweist also auf simple-link.txt, welcher wiederum auf original.txt verweist. Dies ist ein Beispiel für eine Kette von symbolischen Links.
Den Befehl readlink verwenden
Während der Befehl ls Ihnen zeigen kann, worauf ein symbolischer Link verweist, ist der Befehl readlink speziell für diesen Zweck konzipiert. Er gibt den Wert eines symbolischen Links oder den kanonischen Dateinamen aus.
Grundlegende Verwendung von readlink
Die einfachste Verwendung von readlink besteht darin, den Namen des symbolischen Links anzugeben:
readlink simple-link.txt
Ausgabe:
original.txt
Dies zeigt, dass simple-link.txt auf original.txt verweist.
Verschachtelte symbolische Links lesen
Bei verschachtelten symbolischen Links gibt der einfache readlink-Befehl nur das unmittelbare Ziel aus:
readlink nested-link.txt
Ausgabe:
simple-link.txt
Um die gesamte Kette von Links bis zum endgültigen Ziel zu verfolgen, verwenden Sie die Option -f (follow):
readlink -f nested-link.txt
Ausgabe:
/home/labex/project/symlink-tutorial/original.txt
Dies zeigt den vollständigen Pfad zur endgültigen Zieldatei.
Umgang mit relativen Pfaden
Untersuchen wir einen symbolischen Link mit einem relativen Pfad:
ls -l test-directory/relative-link.txt
Ausgabe:
lrwxrwxrwx 1 labex labex 16 Jul 15 10:00 test-directory/relative-link.txt -> ../original.txt
Die Verwendung von readlink mit der Option -f löst den relativen Pfad auf:
readlink -f test-directory/relative-link.txt
Ausgabe:
/home/labex/project/symlink-tutorial/original.txt
Umgang mit defekten Links
Manchmal verweisen symbolische Links auf Dateien, die nicht existieren. Überprüfen wir unseren defekten Link:
readlink broken-link.txt
Ausgabe:
../nonexistent-file.txt
Der Befehl readlink zeigt immer noch an, worauf der defekte Link verweist, auch wenn das Ziel nicht existiert.
Die Verwendung von readlink -f bei einem defekten Link versucht, den Pfad aufzulösen, zeigt aber dennoch an, dass er defekt ist:
readlink -f broken-link.txt
Ausgabe:
/home/labex/project/nonexistent-file.txt
Zusätzliche Optionen für readlink
Der Befehl readlink bietet mehrere nützliche Optionen:
-e: Gibt den kanonisierten Pfad nur zurück, wenn er existiert.-m: Dereferenziert keine Symlinks, zeigt den Pfad des Symlinks an, auch wenn er auf eine nicht existierende Datei zeigt.-n: Gibt keinen abschließenden Zeilenumbruch aus.-v: Ausführliche Ausgabe (verbose).
Beispiel mit der Option -e:
readlink -e broken-link.txt
Dies führt zu keiner Ausgabe, da die Zieldatei nicht existiert.
Alternative Methoden zum Finden von Zielen symbolischer Links
Neben ls und readlink gibt es mehrere andere Befehle, mit denen Sie das Ziel eines symbolischen Links bestimmen können. Lassen Sie uns diese Alternativen erkunden.
Den Befehl file verwenden
Der Befehl file identifiziert den Typ einer Datei, einschließlich symbolischer Links:
file simple-link.txt
Ausgabe:
simple-link.txt: symbolic link to original.txt
Dies zeigt deutlich, dass simple-link.txt ein symbolischer Link ist, der auf original.txt verweist.
Versuchen wir es mit einem Verzeichnis-Link:
file dir-link
Ausgabe:
dir-link: symbolic link to test-directory
Der Befehl file funktioniert sowohl mit Datei- als auch mit Verzeichnis-Links.
Den Befehl realpath verwenden
Der Befehl realpath zeigt den aufgelösten Pfad einer Datei an, was nützlich ist, um das endgültige Ziel von symbolischen Links zu finden:
realpath simple-link.txt
Ausgabe:
/home/labex/project/symlink-tutorial/original.txt
Dies zeigt den absoluten Pfad zur Zieldatei.
Bei verschachtelten Links folgt realpath automatisch der gesamten Kette:
realpath nested-link.txt
Ausgabe:
/home/labex/project/symlink-tutorial/original.txt
Den Befehl stat verwenden
Der Befehl stat liefert detaillierte Informationen über eine Datei, einschließlich der Information, ob es sich um einen symbolischen Link handelt:
stat simple-link.txt
Ausgabe (teilweise):
File: simple-link.txt -> original.txt
Size: 12 Blocks: 0 IO Block: 4096 symbolic link
...
Diese Ausgabe zeigt, dass simple-link.txt ein symbolischer Link ist, der auf original.txt verweist.
Einen Test-Symlink erstellen
Erstellen wir einen neuen symbolischen Link zum Üben:
ln -s /etc/hostname my-hostname
Dies erstellt einen symbolischen Link namens my-hostname, der auf die Datei /etc/hostname verweist.
Lassen Sie uns nun die gelernten Befehle verwenden, um diesen neuen Link zu untersuchen:
ls -l my-hostname
Ausgabe:
lrwxrwxrwx 1 labex labex 12 Jul 15 11:00 my-hostname -> /etc/hostname
readlink my-hostname
Ausgabe:
/etc/hostname
file my-hostname
Ausgabe:
my-hostname: symbolic link to /etc/hostname
cat my-hostname
Ausgabe (Beispiel, Ihr Hostname kann abweichen):
labex-ubuntu
Durch die Verwendung dieser verschiedenen Methoden können Sie das Ziel jedes symbolischen Links in Ihrem Linux-System leicht finden.
Praktische Anwendungen und fortgeschrittene Nutzung
Nachdem Sie nun wissen, wie man das Ziel von symbolischen Links findet, lassen Sie uns einige praktische Anwendungen und fortgeschrittene Nutzungsszenarien erkunden.
Umgang mit tief verschachtelten symbolischen Links
Bei tief verschachtelten Links (ein Link, der auf einen anderen Link zeigt, der wiederum auf einen anderen zeigt usw.) ist die Option -f von readlink unerlässlich:
## Erstellen einer Kette von Links
ln -s original.txt link1.txt
ln -s link1.txt link2.txt
ln -s link2.txt link3.txt
## Die Kette überprüfen
readlink -f link3.txt
Ausgabe:
/home/labex/project/symlink-tutorial/original.txt
Alle symbolischen Links in einem Verzeichnis finden
Um alle symbolischen Links in einem Verzeichnis und dessen Unterverzeichnissen zu finden:
find /home/labex/project/symlink-tutorial -type l
Dieser Befehl sucht nach allen Elementen vom Typ l (symbolische Links) im angegebenen Verzeichnis und dessen Unterverzeichnissen.
Symbolische Links finden und verfolgen
Um alle symbolischen Links zu finden und zu sehen, worauf sie verweisen:
find /home/labex/project/symlink-tutorial -type l -ls
Dieser Befehl kombiniert find mit der Option -ls, um eine detaillierte Auflistung jedes symbolischen Links bereitzustellen.
Dateien über symbolische Links ändern
Wenn Sie eine Datei über einen symbolischen Link ändern, ändern Sie tatsächlich die Zieldatei. Lassen Sie uns dies demonstrieren:
## Den ursprünglichen Inhalt anzeigen
cat original.txt
Ausgabe:
This is the original file content.
## An die Datei über den symbolischen Link anhängen
echo "Line added through symlink." >> simple-link.txt
## Die ursprüngliche Datei überprüfen
cat original.txt
Ausgabe:
This is the original file content.
Line added through symlink.
Die über den symbolischen Link vorgenommene Änderung erscheint in der ursprünglichen Datei.
Symbolische Links ersetzen
Wenn Sie einen symbolischen Link aktualisieren müssen, damit er auf ein anderes Ziel verweist, können Sie die Option -f mit ln -s verwenden:
## Eine neue Datei erstellen
echo "This is a new target file." > new-target.txt
## Den Symlink aktualisieren
ln -sf new-target.txt simple-link.txt
## Überprüfen, worauf der Link jetzt verweist
readlink simple-link.txt
Ausgabe:
new-target.txt
Aufräumen
Lassen Sie uns die Dateien aufräumen, die wir in diesem Schritt erstellt haben:
rm link1.txt link2.txt link3.txt new-target.txt
Wann man symbolische Links verwendet
Symbolische Links sind in vielen Situationen nützlich:
- Erstellen von Verknüpfungen zu häufig aufgerufenen Dateien oder Verzeichnissen
- Verwalten mehrerer Versionen von Dateien oder Software
- Erstellen intuitiverer Dateipfade
- Verknüpfen von Konfigurationsdateien
- Organisieren von Dateien über verschiedene Dateisysteme hinweg
Durch die Beherrschung der Techniken zum Finden von Zielen symbolischer Links sind Sie besser gerüstet, das Linux-Dateisystem effektiv zu verwalten und zu navigieren.
Zusammenfassung
In diesem Tutorial haben Sie gelernt, wie Sie das Ziel von symbolischen Links unter Linux mit verschiedenen Methoden finden:
- Verwendung des Befehls
ls -l, um symbolische Links zu identifizieren und ihre Ziele zu sehen. - Verwendung des Befehls
readlink, um den Wert eines symbolischen Links auszugeben. - Verwendung von
readlink -f, um der gesamten Kette von symbolischen Links bis zum endgültigen Ziel zu folgen. - Erkundung alternativer Methoden wie
file,realpathundstat. - Arbeit mit praktischen Anwendungen und fortgeschrittenen Nutzungsszenarien.
Diese Fähigkeiten sind für eine effektive Verwaltung des Dateisystems unter Linux unerlässlich. Symbolische Links bieten Flexibilität und Komfort bei der Organisation von Dateien und Verzeichnissen, und das Verständnis für den Umgang mit ihnen ist ein wichtiger Bestandteil der Linux-Systemadministration und der täglichen Nutzung.
Sie verfügen nun über das Wissen, um symbolische Links in Ihrer Linux-Umgebung sicher zu identifizieren, zu erstellen und zu verwalten.



