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

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

Einführung

Es gibt mehrere Funktionen in Linux, die nur funktionieren, wenn eine bestimmte Datei oder ein bestimmtes Verzeichnis existiert. Bash ist eine Shell, die Befehle interpretiert. Sie können ein

verwenden

In dieser Anleitung erfahren Sie, wie Sie mit einem Bash-Befehl prüfen, ob eine Datei oder ein Verzeichnis existiert.

Voraussetzungen

  • Ein Linux-Betriebssystem
  • Zugriff auf ein Terminalfenster / eine Befehlszeile (Strg-Alt-T / Strg-Alt-F2)

Überprüfen, ob eine Datei existiert

Zum Testen auf die Datei /tmp/test.log , geben Sie Folgendes in der Befehlszeile ein:

test –f /tmp/test.txt

Die erste Zeile führt den Test aus, ob die Datei existiert. Der zweite Befehl, echo , zeigt die Ergebnisse 0 an, was bedeutet, dass die Datei existiert, 1 bedeutet, dass keine Datei gefunden wurde.

echo $?

In unserem Beispiel war das Ergebnis 1.

Versuchen Sie nun, eine Datei zu erstellen, und testen Sie sie dann:

touch /tmp/test.txt
test –f /tmp/test.txt
echo $?

Da wir die Datei vorher erstellt haben, ist das Ergebnis jetzt 0:

Anstelle des Tests können Sie auch eckige Klammern verwenden Befehl:

[ –f /tmp/test.txt ]
echo $?

Überprüfen, ob ein Verzeichnis existiert

Um zu prüfen, ob ein Verzeichnis existiert, schalten Sie das –f aus Option auf dem Test Befehl für –d (für Verzeichnis):

test –d /tmp/test
echo $?

Erstellen Sie dieses Verzeichnis und führen Sie den Test erneut aus:

touch /tmp/test
test –d /tmp/test
echo $?

Dieser Befehl funktioniert genauso wie für Dateien, also mit Klammern anstelle von test Befehl funktioniert auch hier.

Überprüfen, ob eine Datei nicht existiert

Normalerweise gibt das Testen auf eine Datei 0 (wahr) zurück, wenn die Datei vorhanden ist, und 1 (falsch), wenn die Datei nicht vorhanden ist. Bei einigen Operationen möchten Sie möglicherweise die Logik umkehren. Es ist hilfreich, wenn Sie ein Skript schreiben, um eine bestimmte Datei nur dann zu erstellen, wenn sie noch nicht existiert.

Um eine Datei zu erstellen, falls noch keine vorhanden ist, geben Sie Folgendes in einer Befehlszeile ein:

[ ! –f /tmp/test.txt ] && touch /tmp/test.txt

Das Ausrufezeichen ! steht für nicht . Dieser Befehl stellt sicher, dass nicht vorhanden ist eine Datei namens test.txt im Verzeichnis /tmp Verzeichnis. Sie werden nichts sehen.

Geben Sie Folgendes ein, um festzustellen, ob das System die Datei erstellt hat:

ls /tmp

Sie sollten test.txt sehen aufgeführt. Sie können einen ähnlichen Befehl für ein Verzeichnis verwenden – ersetzen Sie das –f Option mit –d :

[ ! –d /tmp/test ] && touch /tmp/test 

So suchen Sie nach mehreren Dateien

Um zwei Dateien gleichzeitig zu testen, verwenden Sie && Option zum Hinzufügen einer zweiten Datei:

[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”

Zum Testen mehrerer Dateien mit einem Platzhalter wie einem Sternchen * für verschiedene Zeichen stehen:

[ -f /tmp/*.jpg ] && echo “Files were found”

Ändern Sie wie üblich das –f Option zu –d lässt Sie denselben Test für mehrere Verzeichnisse ausführen.

Dateitest-Operatoren zum Auffinden bestimmter Dateitypen

Hier sind einige Befehle zum Testen, um bestimmte Dateitypen zu finden:

  • -f – Datei
  • -d – Verzeichnis
  • L – symbolischer Link
  • -r – lesbar
  • -x – ausführbar
  • w – beschreibbar

Es gibt viele andere Optionen. Weitere Optionen finden Sie auf der Hauptseite (test ––help).

Mit Code-Snippets arbeiten

Die vorherigen Befehle eignen sich gut für einen einfachen zweizeiligen Befehl an einer Eingabeaufforderung. Sie können auch bash verwenden mit mehreren Befehlen. Wenn mehrere Befehle aneinandergereiht werden, nennt man sie ein Skript .

Ein Skript wird normalerweise als Datei gespeichert und ausgeführt. Die Skripterstellung verwendet auch logische Operatoren, um auf eine Bedingung zu testen, und ergreift dann basierend auf den Ergebnissen des Tests Maßnahmen.

Verwenden Sie zum Erstellen einer Skriptdatei den Nano-Editor, um eine neue Datei zu öffnen:

sudo nano bashtest.sh

Geben Sie eines der folgenden Snippets ein, einschließlich #!/bin/bash Kennung. Verwenden Sie Strg-o um die Datei zu speichern, dann Strg-x um Nano zu beenden. Führen Sie dann das Skript aus, indem Sie Folgendes eingeben:

bash bashtest.sh

Das folgende Code-Snippet testet auf das Vorhandensein einer bestimmten Datei. Wenn die Datei vorhanden ist, zeigt das Skript Datei vorhanden an auf dem Bildschirm.

#!/bin/bash

if [ -f /tmp/test.txt ]

then

echo “File exists”

fi

Dies funktioniert genauso, wenn Sie nach einem Verzeichnis suchen. Ersetzen Sie einfach das –f Option mit –d :

#!/bin/bash

if [ -d /tmp/test ]

then 

echo “File exists”

fi

Dieser Befehl sucht nach dem Verzeichnis /tmp/test . Wenn sie existiert, zeigt das System Datei existiert an .


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

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

  3. Wie überprüfe ich, ob eine Datei in Bash leer ist?

  4. Wie erhalte ich das absolute Verzeichnis einer Datei in Bash?

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

Ansible:Prüfen, ob eine Datei existiert

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

So verwenden Sie Bash-Dateitestoperatoren in Linux

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

Wie kann ich mit sudo prüfen, ob eine Datei existiert?