So finden Sie das Ziel eines symbolischen Links

LinuxBeginner
Jetzt üben

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

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.

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

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.

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.

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.

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

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

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.

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.

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.

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

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.

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.

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.

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

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:

  1. Verwendung des Befehls ls -l, um symbolische Links zu identifizieren und ihre Ziele zu sehen.
  2. Verwendung des Befehls readlink, um den Wert eines symbolischen Links auszugeben.
  3. Verwendung von readlink -f, um der gesamten Kette von symbolischen Links bis zum endgültigen Ziel zu folgen.
  4. Erkundung alternativer Methoden wie file, realpath und stat.
  5. 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.