Wie man prüft, ob ein symbolischer Link in Linux existiert

LinuxLinuxBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie, wie Sie feststellen können, ob eine Datei in Linux ein symbolischer Link (symbolic link) ist. Sie werden drei verschiedene Methoden untersuchen, um dies zu erreichen.

Zunächst verwenden Sie den test-Befehl mit der Option -L, um programmgesteuert den Dateityp zu überprüfen. Anschließend überprüfen Sie die Link-Informationen, indem Sie die Ausgabe des ls -l-Befehls untersuchen. Schließlich lernen Sie, wie Sie die Ziel-Datei oder das Ziel-Verzeichnis ermitteln können, auf das ein symbolischer Link zeigt, indem Sie den readlink-Befehl verwenden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/ln("Link Creating") subgraph Lab Skills linux/echo -.-> lab-558768{{"Wie man prüft, ob ein symbolischer Link in Linux existiert"}} linux/test -.-> lab-558768{{"Wie man prüft, ob ein symbolischer Link in Linux existiert"}} linux/ls -.-> lab-558768{{"Wie man prüft, ob ein symbolischer Link in Linux existiert"}} linux/ln -.-> lab-558768{{"Wie man prüft, ob ein symbolischer Link in Linux existiert"}} end

In diesem Schritt lernen Sie, wie Sie mithilfe des test-Befehls mit der Option -L prüfen können, ob eine Datei ein symbolischer Link (symbolic link) ist.

Ein symbolischer Link (oder Symlink) ist eine spezielle Art von Datei, die auf eine andere Datei oder ein anderes Verzeichnis zeigt. Stellen Sie sich das wie einen Shortcut unter Windows vor. Wenn Sie auf einen symbolischen Link zugreifen, greifen Sie tatsächlich auf die Datei oder das Verzeichnis zu, auf das er zeigt.

Zunächst erstellen wir eine einfache Datei. Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden.

echo "This is the original file." > original_file.txt

Jetzt erstellen wir einen symbolischen Link auf original_file.txt. Wir werden den symbolischen Link my_symlink nennen.

ln -s original_file.txt my_symlink
  • ln: Der Befehl, der zum Erstellen von Links verwendet wird.
  • -s: Diese Option teilt ln mit, einen symbolischen Link (statt einen harten Link) zu erstellen.
  • original_file.txt: Die Ziel-Datei, auf die der symbolische Link zeigen wird.
  • my_symlink: Der Name des symbolischen Links, den wir erstellen.

Jetzt können wir den test-Befehl verwenden, um zu prüfen, ob my_symlink ein symbolischer Link ist. Der test-Befehl wird verwendet, um Dateitypen zu prüfen und Werte zu vergleichen. Er gibt keine direkte Ausgabe zurück, sondern sein Exit-Status gibt an, ob der Test erfolgreich war (0) oder fehlgeschlagen ist (nicht null).

Wir können test mit echo kombinieren, um das Ergebnis zu sehen.

test -L my_symlink && echo "my_symlink is a symbolic link" || echo "my_symlink is NOT a symbolic link"
  • test -L my_symlink: Dies prüft, ob my_symlink ein symbolischer Link ist.
  • &&: Dies ist ein logischer UND-Operator. Wenn der Befehl vor && erfolgreich ist (Exit-Status 0), wird der Befehl nach && ausgeführt.
  • ||: Dies ist ein logischer ODER-Operator. Wenn der Befehl vor || fehlschlägt (Exit-Status nicht null), wird der Befehl nach || ausgeführt.

Da my_symlink tatsächlich ein symbolischer Link ist, sollte die Ausgabe wie folgt lauten:

my_symlink is a symbolic link

Jetzt prüfen wir eine normale Datei, wie original_file.txt:

test -L original_file.txt && echo "original_file.txt is a symbolic link" || echo "original_file.txt is NOT a symbolic link"

Die Ausgabe sollte lauten:

original_file.txt is NOT a symbolic link

Dies bestätigt, dass test -L symbolische Links korrekt erkennt.

In diesem Schritt lernen Sie, wie Sie symbolische Links (symbolic links) und ihre Ziele mithilfe des ls -l-Befehls identifizieren können.

Der ls-Befehl wird verwendet, um Dateien und Verzeichnisse aufzulisten. Die Option -l liefert ein "ausführliches Listing", das detaillierte Informationen zu jeder Datei enthält, wie z. B. Berechtigungen, Eigentümer, Größe und Änderungszeit.

Wenn Sie ls -l auf einen symbolischen Link anwenden, zeigt es den Link selbst an und gibt auch an, auf was er zeigt.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden, in dem Sie im vorherigen Schritt original_file.txt und my_symlink erstellt haben.

Jetzt führen Sie den ls -l-Befehl aus:

ls -l

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

total 4
-rw-rw-r-- 1 labex labex   25 Feb 28 10:00 original_file.txt
lrwxrwxrwx 1 labex labex   15 Feb 28 10:00 my_symlink -> original_file.txt

Lassen Sie uns die Ausgabe für my_symlink analysieren:

  • Das erste Zeichen l zeigt an, dass es sich um einen symbolischen Link handelt. Bei einer normalen Datei wäre dies -.
  • Die Berechtigungen (rwxrwxrwx) werden für symbolische Links oft als volle Berechtigungen angezeigt, aber die tatsächlichen Berechtigungen werden durch die Ziel-Datei bestimmt.
  • Die Link-Anzahl ist für einen symbolischen Link typischerweise 1.
  • Der Eigentümer und die Gruppe sind labex.
  • Die Größe (15) ist die Anzahl der Zeichen im Zielpfad (original_file.txt).
  • Der Zeitstempel ist die Erstellungs- oder Änderungszeit des symbolischen Links selbst.
  • my_symlink: Der Name des symbolischen Links.
  • -> original_file.txt: Dieser Teil zeigt deutlich, dass my_symlink auf original_file.txt zeigt.

Vergleichen Sie dies mit der Ausgabe für original_file.txt:

  • Das erste Zeichen - zeigt an, dass es sich um eine normale Datei handelt.
  • Die Berechtigungen (rw-rw-r--) zeigen an, wer die Datei lesen, schreiben und ausführen kann.
  • Die Link-Anzahl (1) gibt an, wie viele harte Links (hard links) auf die Daten dieser Datei verweisen.
  • Die Größe (25) ist die tatsächliche Größe des Dateiinhalts in Bytes.

Die Verwendung von ls -l ist eine sehr häufige Methode, um symbolische Links schnell zu identifizieren und zu sehen, wohin sie verweisen.

In diesem Schritt lernen Sie, wie Sie den readlink-Befehl verwenden können, um das Ziel eines symbolischen Links (symbolic link) zu ermitteln.

Während ls -l hervorragend für eine visuelle Übersicht ist, ist der readlink-Befehl speziell dafür entwickelt, symbolische Links aufzulösen und ihren Zielpfad auszugeben. Dies ist besonders nützlich in Skripten oder wenn Sie nur den Zielpfad ohne andere Dateiinformationen benötigen.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden.

Verwenden Sie den readlink-Befehl auf den symbolischen Link my_symlink, den Sie in den vorherigen Schritten erstellt haben:

readlink my_symlink

Die Ausgabe wird der Pfad sein, auf den der symbolische Link zeigt:

original_file.txt

Dies bestätigt, dass my_symlink tatsächlich auf original_file.txt zeigt.

Der readlink-Befehl hat eine nützliche Option, -f, die alle symbolischen Links rekursiv verfolgt und sie in den absoluten Pfad des endgültigen Ziels auflöst. Dies ist hilfreich, wenn Sie eine Kette von symbolischen Links haben.

Erstellen wir einen weiteren symbolischen Link, der auf my_symlink zeigt:

ln -s my_symlink another_link

Jetzt, wenn Sie readlink auf another_link ohne die -f-Option anwenden, wird es das unmittelbare Ziel anzeigen:

readlink another_link

Ausgabe:

my_symlink

Aber wenn Sie readlink -f auf another_link anwenden, wird es die Kette (another_link -> my_symlink -> original_file.txt) verfolgen und Ihnen den absoluten Pfad des endgültigen Ziels geben:

readlink -f another_link

Ausgabe:

/home/labex/project/original_file.txt

Dies zeigt den vollständigen Pfad zur ursprünglichen Datei. Der readlink -f-Befehl ist sehr leistungsstark, um das endgültige Ziel eines Links zu finden, auch wenn es in anderen Links verschachtelt ist.

Sie haben nun drei Methoden gelernt, um mit symbolischen Links zu arbeiten: die Verwendung von test -L, um zu prüfen, ob eine Datei ein Link ist, die Verwendung von ls -l, um Link-Details und -Ziele anzuzeigen, und die Verwendung von readlink, um den Zielpfad aufzulösen.

Zusammenfassung

In diesem Lab (Laborübung) haben Sie gelernt, wie Sie prüfen können, ob eine Datei in Linux ein symbolischer Link (symbolic link) ist. Zunächst haben Sie eine normale Datei und einen symbolischen Link, der auf diese Datei zeigt, erstellt. Anschließend haben Sie den test-Befehl mit der -L-Option verwendet, um programmgesteuert zu bestimmen, ob eine gegebene Datei ein symbolischer Link ist. Dabei haben Sie beobachtet, wie der Exit-Status dieses Befehls mit logischen Operatoren (&& und ||) verwendet werden kann, um ein Ergebnis anzuzeigen.

Sie haben auch gelernt, wie Sie einen symbolischen Link visuell überprüfen können, indem Sie den ls -l-Befehl verwenden. Dieser zeigt am Anfang des Berechtigungsfelds ein 'l' an und gibt das Ziel des Links an. Schließlich haben Sie den readlink-Befehl untersucht, um den Zielpfad eines symbolischen Links aufzulösen, und verstanden, wie nützlich er für Skripterstellung und Automatisierung ist.