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