Wie man prüft, ob eine Datei 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 in Linux auf verschiedene Weise prüfen können, ob eine Datei existiert. Wir beginnen damit, den test-Befehl zu untersuchen, ein grundlegendes Werkzeug zur Auswertung von Bedingungen in Shell-Skripten, und zeigen, wie Sie seine -f-Option verwenden können, um die Existenz einer Datei zu überprüfen.

Nach dem test-Befehl erfahren Sie, wie Sie die Ausgabe des ls-Befehls nutzen können, um die Existenz einer Datei zu bestätigen, und schließlich tauchen Sie in den stat-Befehl ein, um detaillierte Informationen über eine Datei abzurufen und so deren Existenz und Eigenschaften weiter zu bestätigen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/echo -.-> lab-558677{{"Wie man prüft, ob eine Datei in Linux existiert"}} linux/test -.-> lab-558677{{"Wie man prüft, ob eine Datei in Linux existiert"}} linux/ls -.-> lab-558677{{"Wie man prüft, ob eine Datei in Linux existiert"}} linux/grep -.-> lab-558677{{"Wie man prüft, ob eine Datei in Linux existiert"}} end

Prüfen der Dateiexistenz mit dem test-Befehl

In diesem Schritt lernen Sie, wie Sie in Linux mit dem test-Befehl prüfen können, ob eine Datei existiert. Der test-Befehl ist ein integrierter Shell-Befehl, der bedingte Ausdrücke auswertet. Er wird oft in Shell-Skripten verwendet, um Entscheidungen auf der Grundlage der Existenz oder Eigenschaften von Dateien und Verzeichnissen zu treffen.

Zunächst erstellen wir eine einfache Datei in Ihrem aktuellen Verzeichnis (~/project). Wir verwenden den echo-Befehl, um etwas Text in eine Datei namens my_file.txt zu schreiben.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

echo "This is a test file." > my_file.txt

Dieser Befehl erstellt eine Datei namens my_file.txt in Ihrem aktuellen Verzeichnis (~/project) und schreibt den Text "This is a test file." hinein. Das >-Symbol leitet die Ausgabe des echo-Befehls in die angegebene Datei um.

Jetzt verwenden wir den test-Befehl, um zu prüfen, ob my_file.txt existiert. Die -f-Option bei test prüft, ob eine Datei existiert und eine reguläre Datei ist.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

test -f my_file.txt

Der test-Befehl gibt keine Ausgabe zurück, wenn die Bedingung wahr ist (die Datei existiert). Wenn die Datei nicht existierte, würde er einen nicht-null Exit-Status zurückgeben, der in Skripten üblicherweise verwendet wird.

Um das Ergebnis des test-Befehls zu sehen, können Sie den Exit-Status des vorherigen Befehls mit echo $? prüfen. Ein Exit-Status von 0 bedeutet, dass der Befehl erfolgreich war (die Bedingung war wahr), und ein nicht-null Exit-Status bedeutet, dass er fehlgeschlagen ist (die Bedingung war falsch).

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

echo $?

Sie sollten die Ausgabe 0 sehen, was darauf hinweist, dass der Befehl test -f my_file.txt erfolgreich war, da die Datei existiert.

Jetzt versuchen wir, nach einer Datei zu suchen, die nicht existiert, wie non_existent_file.txt.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

test -f non_existent_file.txt

Wiederum gibt test keine Ausgabe zurück, wenn die Bedingung falsch ist. Prüfen wir den Exit-Status:

echo $?

Diesmal sollten Sie eine Ausgabe von 1 (oder eine andere nicht-null Zahl) sehen, was darauf hinweist, dass der Befehl test -f non_existent_file.txt fehlgeschlagen ist, da die Datei nicht existiert.

Das Verständnis des test-Befehls und das Prüfen von Exit-Statuswerten ist grundlegend für das Schreiben von Shell-Skripten, die Entscheidungen auf der Grundlage des Dateisystems treffen können.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Überprüfen der Dateiexistenz anhand der Ausgabe des ls-Befehls

In diesem Schritt lernen Sie eine weitere gängige Methode, um die Existenz von Dateien und Verzeichnissen zu prüfen: die Verwendung der Ausgabe des ls-Befehls. Der ls-Befehl listet den Inhalt eines Verzeichnisses auf. Indem Sie ls mit anderen Befehlen kombinieren, können Sie effektiv prüfen, ob eine bestimmte Datei existiert.

Zunächst listen wir den Inhalt Ihres aktuellen Verzeichnisses (~/project) mit dem ls-Befehl auf.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

ls

Sie sollten my_file.txt in der Ausgabe sehen, da Sie es im vorherigen Schritt erstellt haben.

my_file.txt

Jetzt versuchen wir, speziell nach my_file.txt zu suchen, indem wir ls und den grep-Befehl verwenden. grep ist ein leistungsstarkes Werkzeug zum Suchen von Textmustern. Wir können die Ausgabe von ls an grep weiterleiten, um zu sehen, ob der Dateiname in der Liste erscheint.

Das Pipe-Symbol | nimmt die Ausgabe des linken Befehls und gibt sie als Eingabe an den rechten Befehl weiter.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

ls | grep my_file.txt

Wenn my_file.txt existiert, wird grep es in der Ausgabe von ls finden und die Zeile mit dem Dateinamen ausgeben.

my_file.txt

Wenn die Datei nicht existierte, würde grep das Muster nicht finden und keine Ausgabe produzieren.

Ähnlich wie beim test-Befehl können Sie den Exit-Status des grep-Befehls prüfen, um festzustellen, ob die Datei gefunden wurde. grep gibt 0 zurück, wenn es eine Übereinstimmung findet, und 1, wenn nicht.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

echo $?

Sie sollten 0 sehen, was darauf hinweist, dass grep my_file.txt gefunden hat.

Jetzt versuchen wir erneut, nach der nicht existierenden Datei zu suchen, indem wir ls und grep verwenden.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

ls | grep non_existent_file.txt

Dieser Befehl wird keine Ausgabe produzieren, da non_existent_file.txt nicht in der Verzeichnisliste steht.

Prüfen Sie den Exit-Status:

echo $?

Sie sollten 1 sehen, was darauf hinweist, dass grep non_existent_file.txt nicht gefunden hat.

Die Verwendung von ls und grep ist ein sehr gängiges Muster in der Shell-Skripting, um die Existenz von Dateien und Verzeichnissen zu prüfen, insbesondere wenn Sie die Ausgabe weiter verarbeiten müssen.

Klicken Sie auf Weiter, um fortzufahren.

Bestätigen von Dateidetails mit dem stat-Befehl

In diesem Schritt lernen Sie den stat-Befehl kennen, der detaillierte Informationen über eine Datei oder ein Dateisystem liefert. Während test und ls die Existenz einer Datei bestätigen können, gibt stat Metadaten wie Größe, Berechtigungen, Eigentum und Zeitstempel an.

Lassen Sie uns stat verwenden, um Informationen über die my_file.txt zu erhalten, die Sie zuvor im Verzeichnis ~/project erstellt haben.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

stat my_file.txt

Sie werden eine Ausgabe ähnlich der folgenden sehen (Details wie Größe, Daten und Gerät können variieren):

  File: my_file.txt
  Size: 21        Blocks: 8          IO Block: 4096   regular file
Device: ---h/-----d Inode: ---       Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: 2023-10-27 10:00:00.000000000 +0000
Modify: 2023-10-27 10:00:00.000000000 +0000
Change: 2023-10-27 10:00:00.000000000 +0000
 Birth: 2023-10-27 10:00:00.000000000 +0000

Lassen Sie uns einige der wichtigsten Informationen, die stat liefert, aufschlüsseln:

  • File: Der Name der Datei.
  • Size: Die Größe der Datei in Bytes.
  • Access: Die Dateiberechtigungen (in oktaler und symbolischer Notation), die Benutzer-ID (Uid) und die Gruppen-ID (Gid) des Dateieigentümers.
  • Access, Modify, Change, Birth: Zeitstempel, die angeben, wann die Datei zuletzt zugegriffen, modifiziert, geändert (Metadaten geändert) und erstellt (Erstellungszeit) wurde.

Wenn Sie versuchen, stat auf eine Datei anzuwenden, die nicht existiert, wird eine Fehlermeldung angezeigt.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

stat non_existent_file.txt

Sie werden eine Fehlermeldung wie die folgende sehen:

stat: cannot stat 'non_existent_file.txt': No such file or directory

Der stat-Befehl ist unglaublich nützlich, wenn Sie mehr als nur die Bestätigung der Existenz einer Datei benötigen. Er liefert wertvolle Metadaten, die für die Systemadministration, das Skripten und die Fehlerbehebung unerlässlich sind.

Sie haben nun drei verschiedene Methoden gelernt, um nach Dateien in Linux zu suchen: die Verwendung von test, ls mit grep und stat. Jede Methode hat ihre Stärken und eignet sich für verschiedene Situationen.

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie in Linux die Existenz einer Datei mit verschiedenen Methoden überprüfen können. Zunächst haben Sie den test-Befehl mit der -f-Option untersucht und verstanden, wie Sie seinen Exit-Status (0 für wahr, ungleich 0 für falsch) interpretieren können, um die Existenz einer Datei festzustellen.

Anschließend haben Sie gelernt, wie Sie die Existenz einer Datei durch die Prüfung der Ausgabe des ls-Befehls überprüfen können und wie Sie mit dem stat-Befehl detaillierte Informationen über eine Datei, einschließlich ihrer Existenz, erhalten können. Diese Techniken bieten unterschiedliche Detailgrade und sind in verschiedenen Szenarien nützlich, um die Existenz und die Eigenschaften von Dateien in einer Linux-Umgebung zu bestätigen.