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