Wie man das Ziel eines symbolischen Links findet

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses Tutorial führt Sie durch den Prozess der Ermittlung des Ziels eines symbolischen Links (Symbolischer Link, auch als Symlink bekannt) auf Ihrem Linux-System. Symbolische Links sind spezielle Dateitypen, die als Zeiger 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 können Sie symbolische Links identifizieren und die Dateien oder Verzeichnisse bestimmen, auf die sie verweisen, indem Sie verschiedene Linux-Befehle verwenden. Dieses Wissen ist für die effektive Navigation und Verwaltung von Dateisystemen in Linux-Umgebungen unerlässlich.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/ln("Link Creating") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") subgraph Lab Skills linux/ls -.-> lab-392854{{"Wie man das Ziel eines symbolischen Links findet"}} linux/ln -.-> lab-392854{{"Wie man das Ziel eines symbolischen Links findet"}} linux/cat -.-> lab-392854{{"Wie man das Ziel eines symbolischen Links findet"}} linux/cd -.-> lab-392854{{"Wie man das Ziel eines symbolischen Links findet"}} linux/find -.-> lab-392854{{"Wie man das Ziel eines symbolischen Links findet"}} end

Symbolische Links (Symlinks) sind spezielle Dateien in Linux, die auf andere Dateien oder Verzeichnisse verweisen. Sie funktionieren ähnlich wie Verknüpfungen in anderen Betriebssystemen, sind jedoch leistungsfähiger und in das Dateisystem integriert.

Beginnen wir damit, die symbolischen Links zu untersuchen, die für dieses Tutorial eingerichtet wurden. Navigieren Sie zunächst in das Projektverzeichnis:

cd ~/project/symlink-tutorial

Jetzt listen wir die Dateien in diesem Verzeichnis auf, um zu sehen, was wir haben:

ls -la

Sie sollten eine Ausgabe ähnlich der folgenden 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 aussehen:

  • Sie beginnen mit l in den Dateiberechtigungen (erste Spalte).
  • Ihren 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 cat-Befehl anzeigen:

cat simple-link.txt

Ausgabe:

This is the original file content.

Obwohl Sie simple-link.txt zugreifen, sehen Sie tatsächlich den Inhalt von original.txt. So funktionieren symbolische Links - sie leiten den Zugriff transparent auf ihr Ziel um.

Jetzt versuchen wir auch den symbolischen Verzeichnislink:

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, wenn Sie den Inhalt von dir-link auflisten, sehen Sie tatsächlich den Inhalt des test-directory, auf das es verweist.

Der ls-Befehl mit bestimmten Optionen ist eine der einfachsten Methoden, um symbolische Links zu identifizieren und zu sehen, auf was sie verweisen. Lassen Sie uns verschiedene Möglichkeiten untersuchen, wie Sie ls zu diesem Zweck verwenden können.

Auflistung mit der -l-Option

Die -l-Option liefert eine detaillierte Auflistung und zeigt den Link und sein Ziel an:

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.

Auflistung aller Dateien mit der -la-Option

Die kombinierte -la-Option listet alle Dateien (einschließlich versteckter Dateien) mit detaillierten Informationen auf:

ls -la

Dies zeigt alle Dateien im aktuellen Verzeichnis an, einschließlich symbolischer Links und ihrer Ziele.

Farbcodierte Auflistung

Die meisten modernen Linux-Distributionen konfigurieren ls so, dass verschiedene Dateitypen in verschiedenen Farben angezeigt werden. Symbolische Links werden typischerweise in hellblau oder cyan angezeigt. Sie können verwenden:

ls --color=always

Die Ausgabe zeigt symbolische Links in einer anderen Farbe.

Sie können den find-Befehl 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 zu wechseln (-maxdepth 1).

Schauen wir uns nested-link.txt an, das 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

Somit verweist nested-link.txt auf simple-link.txt, das wiederum auf original.txt verweist. Dies ist ein Beispiel für eine Kette von symbolischen Links.

Während der ls-Befehl Ihnen zeigen kann, auf was ein symbolischer Link verweist, ist der readlink-Befehl speziell für diesen Zweck entwickelt. 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 grundlegende readlink-Befehl nur das unmittelbare Ziel an:

readlink nested-link.txt

Ausgabe:

simple-link.txt

Um die gesamte Kette von Links bis zum endgültigen Ziel zu verfolgen, verwenden Sie die -f-Option (follow, folgen):

readlink -f nested-link.txt

Ausgabe:

/home/labex/project/symlink-tutorial/original.txt

Dies zeigt den vollständigen Pfad zur endgültigen Ziel-Datei an.

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 -f-Option 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 fehlerhaften Link:

readlink broken-link.txt

Ausgabe:

../nonexistent-file.txt

Der readlink-Befehl zeigt weiterhin, auf was der fehlerhafte Link verweist, auch wenn das Ziel nicht existiert.

Die Verwendung von readlink -f mit einem fehlerhaften Link versucht, den Pfad aufzulösen, zeigt aber dennoch an, dass er fehlerhaft ist:

readlink -f broken-link.txt

Ausgabe:

/home/labex/project/nonexistent-file.txt

Der readlink-Befehl bietet mehrere nützliche Optionen:

  • -e: Gib nur den kanonisierten Pfad zurück, wenn er existiert.
  • -m: Dereferenziere keine symbolischen Links, zeige den Pfad des symbolischen Links an, auch wenn er auf eine nicht existierende Datei verweist.
  • -n: Gib keine abschließende neue Zeile aus.
  • -v: Ausführliche Ausgabe.

Beispiel mit der -e-Option:

readlink -e broken-link.txt

Dies gibt keine Ausgabe, da die Ziel-Datei 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 untersuchen.

Verwendung des file-Befehls

Der file-Befehl 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 auf original.txt ist.

Probieren wir es mit einem Verzeichnis-Link aus:

file dir-link

Ausgabe:

dir-link: symbolic link to test-directory

Der file-Befehl funktioniert sowohl mit Datei- als auch mit Verzeichnis-Links.

Verwendung des realpath-Befehls

Der realpath-Befehl 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 Ziel-Datei an.

Bei verschachtelten Links folgt realpath automatisch der gesamten Kette:

realpath nested-link.txt

Ausgabe:

/home/labex/project/symlink-tutorial/original.txt

Verwendung des stat-Befehls

Der stat-Befehl 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 auf original.txt ist.

Lassen Sie uns einen neuen symbolischen Link erstellen, um damit zu üben:

ln -s /etc/hostname my-hostname

Dies erstellt einen symbolischen Link namens my-hostname, der auf die Datei /etc/hostname verweist.

Nun verwenden wir die Befehle, die wir gelernt haben, 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 unterschiedlich sein):

labex-ubuntu

Durch die Verwendung dieser verschiedenen Methoden können Sie leicht das Ziel eines beliebigen symbolischen Links in Ihrem Linux-System finden.

Praktische Anwendungen und fortgeschrittene Verwendung

Nachdem Sie nun verstehen, wie Sie das Ziel von symbolischen Links ermitteln können, wollen wir einige praktische Anwendungen und fortgeschrittene Nutzungsszenarien untersuchen.

Bei tief verschachtelten Links (ein Link verweist auf einen anderen Link, der wiederum auf einen anderen Link verweist usw.) ist die -f-Option 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

## Überprüfen der Kette
readlink -f link3.txt

Ausgabe:

/home/labex/project/symlink-tutorial/original.txt

Um alle symbolischen Links in einem Verzeichnis und seinen Unterverzeichnissen zu finden:

find /home/labex/project/symlink-tutorial -type l

Dieser Befehl sucht nach allen Elementen des Typs l (symbolische Links) im angegebenen Verzeichnis und seinen Unterverzeichnissen.

Um alle symbolischen Links zu finden und zu sehen, auf was sie verweisen:

find /home/labex/project/symlink-tutorial -type l -ls

Dieser Befehl kombiniert find mit der -ls-Option, um eine detaillierte Auflistung jedes symbolischen Links bereitzustellen.

Wenn Sie eine Datei über einen symbolischen Link modifizieren, modifizieren Sie tatsächlich die Ziel-Datei. Hier ein Beispiel:

## Anzeigen des ursprünglichen Inhalts
cat original.txt

Ausgabe:

This is the original file content.
## Anhängen an die Datei über den symbolischen Link
echo "Line added through symlink." >> simple-link.txt

## Überprüfen der ursprünglichen Datei
cat original.txt

Ausgabe:

This is the original file content.
Line added through symlink.

Die Änderung, die über den symbolischen Link vorgenommen wurde, 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 -f-Option mit ln -s verwenden:

## Erstellen einer neuen Datei
echo "This is a new target file." > new-target.txt

## Aktualisieren des symbolischen Links
ln -sf new-target.txt simple-link.txt

## Überprüfen, auf was 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 Shortcuts zu häufig verwendeten Dateien oder Verzeichnissen
  • Warten mehrerer Versionen von Dateien oder Software
  • Erstellen von intuitiveren Dateipfaden
  • Verlinken von Konfigurationsdateien
  • Organisieren von Dateien über verschiedene Dateisysteme hinweg

Indem Sie die Techniken zum Finden der Ziele von symbolischen Links beherrschen, 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 in Linux mit verschiedenen Methoden ermitteln können:

  1. Verwenden des ls -l-Befehls, um symbolische Links zu identifizieren und ihre Ziele anzuzeigen
  2. Verwenden des readlink-Befehls, um den Wert eines symbolischen Links auszugeben
  3. Verwenden von readlink -f, um die gesamte Kette von symbolischen Links bis zum endgültigen Ziel zu verfolgen
  4. Untersuchen alternativer Methoden wie file, realpath und stat
  5. Arbeiten mit praktischen Anwendungen und fortgeschrittenen Nutzungsszenarien

Diese Fähigkeiten sind für die effektive Verwaltung des Dateisystems in Linux unerlässlich. Symbolische Links bieten Flexibilität und Komfort bei der Organisation von Dateien und Verzeichnissen, und das Verständnis, wie man mit ihnen umgeht, ist ein wichtiger Bestandteil der Linux-Systemadministration und des täglichen Gebrauchs.

Jetzt verfügen Sie über das Wissen, um symbolische Links in Ihrer Linux-Umgebung sicher zu identifizieren, zu erstellen und zu verwalten.