GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

Wenn Sie an einem Bash-Skript arbeiten, das mit Dateien und Verzeichnissen interagiert, kann es vorkommen, dass Sie sicherstellen müssen, dass die Datei oder das Verzeichnis vorhanden ist. Dies hilft, mögliche Fehler beim Ausführen bestimmter Aktionen für eine nicht vorhandene Datei zu vermeiden.

In diesem Tutorial zeige ich Ihnen einige Möglichkeiten, um zu überprüfen, ob eine Datei oder ein Verzeichnis im Bash-Skript vorhanden ist oder nicht. Beginnen wir zuerst mit der Datei.

Überprüfen Sie, ob die Datei im Bash-Skript existiert

Die Idee hier ist, den Operator -f zu verwenden, der nur wahr zurückgibt, wenn es sich um eine normale Datei (nicht um ein Verzeichnis) handelt.

Angenommen, Sie möchten überprüfen, ob die Datei /home/user/my_file existiert oder nicht. So können Sie mit eckigen Klammern prüfen

#!/bin/bash
 
if [ -f /home/user/my_file ]
then
    echo "My file exists"
fi

Aber Sie werden den Dateinamen nicht immer vorher bekommen, oder? Sie können es in einer Variablen haben und wenn das der Fall ist, können Sie es auf diese Weise verwenden.

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

Grundsätzlich kommt es auf die Bedingung an, die Sie im if-Befehl verwenden. Es liegt an Ihnen, wie Sie die if-Anweisung verwenden möchten.

Sie können es zum Beispiel mit zwei eckigen Klammern schreiben, halten Sie „then“ in der gleichen Zeile wie „if“ mit Hilfe von Semikolon wie folgt:

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]; then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

oder fügen Sie die gesamte Anweisung wie folgt zusammen:

[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"

Überprüfen Sie, ob die Datei in Bash mit Test existiert

Sie können auch Test in Bash verwenden, um zu sehen, ob die Datei existiert oder nicht. Es ist ziemlich dasselbe, nur dass Sie die eckigen Klammern in der if-Anweisung nicht verwenden:

#!/bin/bash

FILE=/home/user/my_file
 
if test -f "$FILE" 
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

Sie können den obigen Code auch in einer einzelnen Zeile wie folgt verwenden:

test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"

Überprüfen Sie, ob die Datei im Bash-Skript nicht existiert

Was ist, wenn es umgekehrt ist und Sie überprüfen möchten, ob die Datei in Bash nicht existiert? Sie können so ziemlich den gleichen Code wie oben verwenden, indem Sie den Negationsoperator verwenden:

#!/bin/bash

FILE=/home/user/my_file
 
if [ ! -f "$FILE" ]
then
    echo "My file doesn't exist"
fi

Nachdem Sie nun wissen, wie man mit Dateien umgeht, gehen wir zu den Verzeichnissen über.

Überprüfen Sie, ob das Verzeichnis im Bash-Skript existiert

Der Code zum Überprüfen des Verzeichnisses ist derselbe wie der, den Sie im vorherigen Abschnitt gesehen haben. Der einzige Unterschied besteht darin, dass Sie -d anstelle von -f verwenden. -d gibt nur für Verzeichnisse wahr zurück.

#!/bin/bash
 
if [ -d /home/user/my_dir ]
then
    echo "My directory exists"
fi

Sie können den Test auch hier verwenden:

#!/bin/bash

DIR=/home/user/my_dir
 
if test -d "$DIR" 
then
    echo "My directory exists"
else 
    echo "My directory doesn't exist"
fi

Überprüfen Sie, ob das Verzeichnis in der Bash nicht existiert

Sie können die Negation erneut verwenden, um zu prüfen, ob das Verzeichnis nicht existiert:

#!/bin/bash

DIR=/home/user/my_dir
 
if [ ! -d "$DIR" ]
then
    echo "My directory doesn't exist"
fi

Das ist es. Das ist alles, was Sie tun müssen, um zu überprüfen, ob ein Dateiverzeichnis in der Bash-Shell existiert oder nicht.

Ich hoffe, Sie finden diesen Bash-Tipp nützlich. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte unten einen Kommentar.


Linux
  1. So überprüfen Sie die Syntax von Sudoers

  2. Überprüfen Sie, ob ein bestimmter Dateityp/eine bestimmte Erweiterung im Verzeichnis vorhanden ist

  3. Wie parse ich eine CSV-Datei in Bash?

  4. So überprüfen Sie, ob ein Shell-Befehl von PHP existiert

  5. Wie kann ich überprüfen, ob ein Verzeichnis existiert?

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

So lesen Sie eine Datei Zeile für Zeile in Bash

Wie kann ich überprüfen, ob eine Datei in einem bestimmten Verzeichnis in einem Bash-Skript vorhanden ist?

Bash:Keine solche Datei oder Verzeichnis?

Wie führt man ein Bash-Skript aus?