Bash-Überprüfung, ob eine Datei vorhanden ist – Lernprogramm und zu verwendende Befehle

Beim Erstellen eines Bash-Skripts kann es vorkommen, dass Sie feststellen müssen, ob eine Datei vorhanden ist oder nicht damit etwas zu tun haben. Mit dem Befehl test können Sie überprüfen, ob eine Datei vorhanden ist und um welchen Typ es sich handelt.

In diesem Lernprogramm zeigen wir Ihnen, wie Sie überprüfen, ob eine Datei in Linux-basierten Betriebssystemen vorhanden ist.

Grundlegende Syntax des Testbefehls

Die grundlegende Syntax des Testbefehls, um zu überprüfen, ob eine Datei vorhanden ist, wie unten gezeigt:

test -e file

Oder

test -f file

Wobei:

  • -e
    Diese Option prüft, ob eine Datei unabhängig vom Typ vorhanden ist.
  • -f
    Mit dieser Option wird geprüft, ob eine Datei nur vorhanden ist, wenn die DATEI eine reguläre Datei ist.

Die Manpage des Testbefehls sollte wie folgt angezeigt werden:

man test

Der folgende Bildschirm sollte angezeigt werden :

Test, ob eine Datei über die Befehlszeile vorhanden ist

In diesem Abschnitt werden wir Ihnen zeigen So überprüfen Sie mithilfe der Befehlszeile, ob eine Datei vorhanden ist:

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob eine Datei mit dem Namen / etc / fstab vorhanden ist (T. rue):

test -f /etc/fstab

Führen Sie als Nächstes den folgenden Befehl aus, um den Exit-Code auf 0 oder 1 zu setzen, wenn der Test erfolgreich war oder nicht.

echo $?

Ausgabe:

0

Die Ausgabe ist 0, was bedeutet, dass die Datei / etc / fstab vorhanden ist.

Sie können dies auch Verwenden Sie den folgenden Befehl, um zu überprüfen, ob eine Datei vorhanden ist:


echo $0

Ausgabe:

0

Führen Sie als Nächstes den folgenden Befehl aus, um zu testen, ob die Datei / etc / fabab vorhanden ist ( False).

test -f /etc/fabab
echo $?

Ausgabe:

1

Die Ausgabe ist 1, was bedeutet, dass die Datei / etc / fabab nicht vorhanden ist.

Sie kann auch testen, ob eine Datei mit dem Namen /etc/rc.local vorhanden ist oder nicht, indem die bedingte Bash-Ausführung wie unten gezeigt verwendet wird:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Oder

&& echo "Exists" || echo "Not Exists"

Wenn die Datei mit dem Namen /etc/rc.local vorhanden ist, sollte die folgende Ausgabe angezeigt werden:

Exists

Mit einem einzigen Befehl können Sie auch überprüfen, ob mehrere Dateien vorhanden sind oder nicht:

&& echo "both files exist"

oder

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Sie sollten die folgende Ausgabe sehen:

both files exist

Test, ob Datei in Bash vorhanden ist

In diesem Abschnitt erstellen wir ein Bash-Skript und prüfen, ob eine Datei vorhanden ist oder nicht, indem wir eine Nachricht drucken.

Erstellen Sie eine Datei mit dem Namen test.sh und prüfen Sie, ob eine Datei vorhanden ist /etc/rc.local existiert oder nicht:

nano test.sh

Fügen Sie die folgenden Zeilen hinzu:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Speichern und schließen Sie die Datei und führen Sie das Skript mit dem folgenden Befehl aus:

bash test.sh

Sie sollten die folgende Ausgabe sehen:

The file "/etc/rc.local" exists.

Jetzt erstellen wir eine Datei test.sh und testen, ob die Datei / etc / rc.localad existiert aus nicht:

nano test.sh

Fügen Sie die folgenden Zeilen hinzu:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Speichern und schließen Sie die Datei und führen Sie das Skript mit dem folgenden Befehl aus:

bash test.sh

Sie sollten die folgende Ausgabe sehen:

The file "/etc/rc.localad" is not exists.

Sie können auch feststellen, ob eine Datei vorhanden ist oder nicht, und im Bash-Skript eine Aktion ausführen.

Suchen Sie beispielsweise eine Datei mit dem Namen / etc / hosts und kopieren Sie sie in das Verzeichnis / opt, falls die Datei vorhanden ist.

Erstellen Sie dazu eine Datei mit dem Namen test.sh:

nano test.sh

Fügen Sie die folgenden Zeilen hinzu:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Speichern und schließen Sie die Datei und führen Sie das Skript mit dem folgenden Befehl aus:

Testen Sie nun das Verzeichnis / opt mit dem folgenden Befehl:

ls /opt/hosts

Die Hosts-Datei sollte in der folgenden Ausgabe angezeigt werden:

/opt/hosts

Sie können auch den Ausdruck verwenden! Um zu überprüfen, ob die Datei nicht vorhanden ist.

Führen Sie beispielsweise den folgenden Befehl aus, um zu überprüfen, ob die Datei / etc / hosts nicht vorhanden ist:

&& echo "File does not exist"

oder

test ! -f /etc/hosting && echo "File does not exist"

Sie sollten die folgende Ausgabe sehen:

File does not exist

Test, ob Verzeichnis vorhanden ist

Mit der Option -d können Sie auch herausfinden, ob ein Verzeichnis vorhanden ist oder nicht.

Überprüfen Sie beispielsweise, ob das Verzeichnis / etc / apache2 vorhanden ist oder nicht.

&& echo "Directory is exists"

Or. en

test -d /etc/apache2 && echo "Directory is exists"

Sie sollten die folgende Ausgabe sehen:

Directory is exists

Sie können auch ein Bash-Skript mit bedingten Ausdrücken erstellen, um zu überprüfen, ob ein Verzeichnis vorhanden ist oder nicht.

Erstellen Sie eine Datei mit dem Namen test.sh wie folgt:

nano test.sh

Fügen Sie die folgenden Zeilen hinzu:

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Geben Sie dann mit dem folgenden Befehl die richtige Berechtigung:

chmod 755 test.sh

Testen Sie als Nächstes, ob das Verzeichnis / etc / nginx verfügbar ist oder nicht mit dem folgenden Befehl:

./test.sh /etc/nginx

Sie sollten die folgende Ausgabe sehen:

Directory /etc/nginx/ exists.

Testen Sie anschließend mit dem folgenden Befehl, ob das Verzeichnis / etc / linux verfügbar ist oder nicht:

./test.sh /etc/linux

Sie sollten die folgende Ausgabe sehen:

Directory /etc/linux does not exists

Dateitestoperatoren in Bash

Mit den folgenden Dateitestoperatoren können Sie überprüfen, ob eine „Datei“ vorhanden ist und bestimmte Typen hat:

  • -b
    DATEI existiert und ist blockspezifisch
  • -c
    DATEI existiert und ist charakterspezifisch
  • -d
    DATEI existiert und ist a Verzeichnis
  • -e
    DATEI existiert
  • -f
    DATEI existiert und ist eine reguläre Datei
  • -g
    DATEI existiert und ist set-group-ID
  • -G
    DATEI ex ists und gehört der effektiven Gruppen-ID
  • -h
    DATEI existiert und ist eine symbolische Verknüpfung (wie -L)
  • -k
    DATEI existiert und hat Das Sticky-Bit-Set
  • -L
    FILE existiert und ist eine symbolische Verknüpfung (wie -h).
  • -O
    FILE existiert und gehört dem effektiven Benutzer ID
  • -p
    DATEI existiert und ist eine Named Pipe
  • -r
    DATEI existiert und Leseberechtigung wird erteilt
  • -s
    DATEI existiert und hat eine Größe größer als Null
  • -S
    DATEI existiert und ist ein Socket
  • -u
    DATEI existiert und sein gesetztes Benutzer-ID-Bit ist gesetzt
  • -w
    DATEI existiert und Schreibberechtigung wird erteilt
  • -x
    DATEI existiert und Ausführungs- (oder Such-) Berechtigung wird erteilt

Schlussfolgerung

Leave a Reply

Schreibe einen Kommentar

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