Bash-Prüfung, ob Datei vorhanden ist

In den meisten Fällen müssen wir möglicherweise eine Aktion ausführen, mit der überprüft wird, ob eine Datei vorhanden ist oder nicht.

In Bash können wir mit einem „Testbefehl“ prüfen, ob eine Datei vorhanden ist, und den Dateityp bestimmen.

Nachfolgend sind die Syntaxen des Testbefehls und wir aufgeführt Sie können jeden dieser Befehle verwenden:

Wir müssen einen einzigen Befehl in Klammern „[“ verwenden, um unser Skript für alle POSIX-Shells portierbar zu machen. Die aktualisierte Version des Testbefehls enthält doppelte Klammern „[[„, die auf den meisten modernen Systemen mit Bash, Zsh und Ksh als Standard-Shell unterstützt werden.

Überprüfen, ob eine Datei vorhanden ist

Während Sie überprüfen, ob eine Datei vorhanden ist, sind die am häufigsten verwendeten Dateoperatoren -e und -f. Mit der Option „-e“ wird überprüft, ob eine Datei unabhängig vom Typ vorhanden ist, während mit der Option „-f“ nur dann der Wert true zurückgegeben wird, wenn es sich bei der Datei um eine reguläre Datei handelt (kein Verzeichnis oder Gerät).

Die häufigste Option, um zu überprüfen, ob die Datei vorhanden ist oder nicht, ist die Verwendung des Testbefehls mit der „if-bedingten Anweisung“.

Im Folgenden finden Sie Beispiele, um zu überprüfen, ob die „read_file“. txt „-Datei existiert:

Methode 1

Methode 2

Methode 3

Ausgabe

Die Ausgabe für alle drei Methoden erfolgt wie folgt, da im Verzeichnis eine Datei (read_file.txt) vorhanden ist:

read_file.txt exist

Wenn wir eine Aktion ausführen möchten, die ein Ergebnis liefert, das darauf basiert, ob die Datei vorhanden ist oder nicht, können wir das if / then-Konstrukt im verwenden Folgende Methode:

Beispiel

Ausgabe

read_file.txt exist

Wir können den Testbefehl auch ohne die if-Anweisung verwenden. Wir können eine der folgenden Methoden verwenden:

Methode 1

Methode 2

Methode 3

Ausgabe

Die Ausgabe für alle drei Methoden erfolgt wie folgt, da im Verzeichnis eine Datei (read_file.txt) vorhanden ist:

read_file.txt exist

Beispiel

Im Gegensatz zu & &, die Anweisung nach dem || Der Operator wird nur ausgeführt, wenn der Exit-Status des Testbefehls „false“ ist.

Beispiel

Ausgabe

read_file.txt exist

Dies sind die in Bash häufig verwendeten Methoden, um zu überprüfen, ob die Datei vorhanden ist oder nicht.

Überprüfen Sie, ob ein Verzeichnis vorhanden ist

Mit dem Operator „-d“ können wir testen, ob eine Datei ein Verzeichnis ist oder nicht.

Mit den folgenden Methoden können Sie überprüfen, ob das Verzeichnis „Javatpoint“ vorhanden ist:

Methode 1

Methode 2

Hinweis: Wir können auch doppelte Klammern „[[“ anstelle einer einzelnen Klammer „[“ verwenden.

Ausgabe

Die Ausgabe für beide oben genannten Methoden erfolgt wie folgt, da am angegebenen Speicherort ein Verzeichnis (mit dem Namen Javatpoint) vorhanden ist:

Javatpoint is a directory

Überprüfen, ob die Datei nicht vorhanden ist

Der Testausdruck kann mit dem Ausrufezeichen (! -logischer NOT-Operator) negiert werden. Schauen Sie sich das folgende Beispiel an:

Beispiel

Das obige Skript kann auch wie folgt geschrieben werden:

Ausgabe

missing_read_file.txt unavailable

Dateitestoperatoren

Die Testbefehle enthalten die folgenden Dateioperatoren, die dies ermöglichen Test auf bestimmte Dateitypen:

-b FileReturns „True“, wenn die DATEI als Blockspezial existiert Datei.
-c FileReturns „True“, wenn die DATEI als Sonderzeichendatei vorhanden ist.
-d FileReturns „True“, wenn die DATEI als Verzeichnis vorhanden ist.
-e FileReturns „True „Wenn die DATEI als Datei existiert, unabhängig vom Typ (Knoten, Verzeichnis, Socket usw.).
-f FileReturns “ True “ Wenn die DATEI als reguläre Datei vorhanden ist (kein Verzeichnis oder Gerät).
-G FileReturns „True“, wenn die DATEI vorhanden ist und die enthält Dieselbe Gruppe, in der der Benutzer die Kommunikation ausführt und.
-h FileReturns „True“, wenn die DATEI als symbolische Verknüpfung vorhanden ist.
-g FileReturns „True“, wenn die DATEI vorhanden ist und das Flag set-group-id (sgid) enthält.
-k FileReturns „True“, wenn die DATEI vorhanden ist und ein Sticky-Bit-Flag enthält.
-L FileReturns „True“, wenn die DATEI existiert als symbolische Verknüpfung.
-O FileReturns „True“, wenn die DATEI existiert und dem Benutzer gehört, der den Befehl ausführt.
-p FileReturns „True“, wenn die DATEI als Pipe vorhanden ist.
– r FileReturns „True“, wenn die DATEI als lesbare Datei vorhanden ist.
-S FileReturns „True“, wenn die DATEI existiert als Socket.
-s FileReturns „True“, wenn die DATEI vorhanden ist und eine Größe ungleich Null hat.
-u FileReturns „True“, wenn die DATEI vorhanden ist und das Flag set-user-id (suid) gesetzt ist.
-w FileReturns „True“, wenn die DATEI als beschreibbare Datei vorhanden ist.
-x FileReturns „True“, wenn die DATEI als vorhanden ist ausführbare Datei.

Write a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.