Bash Sprawdź, czy plik nie istnieje

Bash Sprawdź, czy plik nie istnieje
Bash Scripting to język programowania, którego można szybko używać w Linux i innych środowiskach systemu operacyjnego do automatyzacji zadań. Podczas pisania scenariuszy Bash często musimy działać na plikach w systemie plików. Jeśli jednak nasz kod próbuje uzyskać dostęp do pliku i nie istnieje, możemy uzyskać nieoczekiwany błąd. Dlatego jego najlepszą praktyką do sprawdzania istnienia plików przed próbą odwołania się do pliku w skryptach Bash.

Przykład 01

Musimy dodać do niego wsparcie Bash '#!/bin/bash '. Po tym zainicjowaliśmy 'PLIK' zmienna ze ścieżką do samego pliku 'plik.cii' I.mi., „/home/linuxhint/plik.cii'. Aby sprawdzić, czy plik istnieje, czy nie, będziemy używać 'Jeśli następnie' Oświadczenie przyjmujące swoje warunki w pojedynczy kwadratowych nawiasach w tym kodzie bash. Aby sprawdzić, czy plik istnieje, musimy użyć '-F' opcja, a następnie zmienna podwójnie cytowana "PLIK" z postacią dolara „$”. To jest sprawdzenie, czy podana ścieżka do pliku zawiera plik o nazwie 'plik.cii' albo nie.

Stan kończy się tutaj i 'Następnie' Część oświadczenia zaczyna się. Jeśli plik istnieje, wyświetli wiadomość, że plik 'plik.cii' istnieje na danej ścieżce za pomocą 'Echo' oświadczenie. 'Jeśli' Stwierdzenie kończy się tutaj z końcową składnią „fi”.

#!/bin/bash
File =/home/linuxhint/plik.cii
jeśli [-f „$ plik”]; Następnie
echo "$ plik istnieje!"
fi

Teraz zapisz plik kodu bash i uruchom plik za pomocą wiersza polecenia poniżej:

plik bash.cii

Oto wyjście podczas uruchamiania polecenia:

Linuxhint@u22: ~ $ bash plik.cii
/home/linuxhint/plik.sh istnieje!

Jeśli ulepszymy skrypt i zmienimy 'PLIK' do pliku, który nie istnieje, i ponownie skrypt nie otrzymujemy żadnego wyjścia ze skryptu.

Przykład 02

W tym przykładzie dodamy instrukcję Else do instrukcji IF w poprzednim przykładzie. W ten sposób, jeśli plik nie istnieje, otrzymamy odpowiedni komunikat o błędzie wydrukowany na standardowym wyjściu lub ekranu. Oto nowy kod:

#!/bin/bash
File =/home/linuxhint/plik.cii
jeśli [-f „$ plik”]; Następnie
echo "$ plik istnieje!"
w przeciwnym razie
echo "$ plik nie istnieje!"
fi

Możemy uruchomić skrypty w następujący sposób:

plik $ bash.cii

Otrzymujemy takie same wyjście jak wcześniej:

Linuxhint@u22: ~ $ bash plik.cii
/home/linuxhint/plik.sh istnieje!

Ale teraz, jeśli zhakujemy nazwę pliku jako plik, który nie istnieje, otrzymamy odpowiedni komunikat o błędzie:

Linuxhint@u22: ~ $ bash plik.cii
/home/linuxhint/nofile.SH nie istnieje!

Przykład 03

Powiedzmy, że chcesz użyć 'nie' znak, więc najpierw sprawdzasz, czy plik nie istnieje. Na przykład, jeśli plik nie istnieje, możesz wydrukować komunikat o błędzie, ale możesz nawet nie wymagać innej w tym kontekście, ponieważ dbasz tylko o to, czy plik nie istnieje, w przeciwnym razie skrypt może być normalny bez wychodzenia z błąd.

Oto składnia do użycia '!' znak, aby odwrócić czek, aby sprawdzić Jeśli plik nie istnieje:

#!/bin/bash
File =/home/linuxhint/nofile.cii
Jeśli [ ! -f „$ plik”]; Następnie
echo "$ plik nie istnieje!"
w przeciwnym razie
echo "$ plik istnieje!"
fi

Najpierw uruchomimy skrypt z zepsutą nazwą pliku:

plik $ bash.cii

Wyjście, gdy uruchamia warunek błędu, znajduje się poniżej:

Linuxhint@u22: ~ $ bash plik.cii
/home/linuxhint/nofile.SH nie istnieje!

Teraz możemy naprawić nazwę pliku jako plik, który istnieje:

#!/bin/bash
File =/home/linuxhint/plik.cii
Jeśli [ ! -f „$ plik”]; Następnie
echo "$ plik nie istnieje!"
w przeciwnym razie
echo "$ plik istnieje!"
fi

Oto dane wyjściowe z istniejącym plikiem:

Linuxhint@u22: ~ $ bash plik.cii
/home/linuxhint/plik.sh istnieje!
Linuxhint@u22: ~ $

Przykład 04

W tym przykładzie pokażemy szybką składnię z powłoki bez pisania skryptu i wprowadzimy operatorów logicznych do wydrukowania sukcesu lub błędów. Oto skrypt, który możesz uruchomić na terminalu:

Linuxhint@u22: ~ $ [-f plik.sh] && echo „plik istnieje” || Echo „Plik nie istnieje”
plik istnieje
Linuxhint@u22: ~ $

W powyższym kodzie piszemy kod bezpośrednio na interaktywnym terminalu. Używamy testu warunkowego do sprawdzenia, czy plik istnieje. Powróci 0 dla sukcesu. Logiczne lub logiczne i operatorzy są używane do wskazania, który komunikat powinien zostać wydrukowany, sukces lub porażka.

Przykład 05

Możesz także zastosować podobne podejście, jak pokazano w tym artykule, aby sprawdzić istnienie katalogu za pomocą '-D' opcja w swoim stanie zamiast '-F'. Powiedzmy, że mamy katalog 'test' w naszym folderze domowym i używamy tego samego skryptu z '-D' opcja sprawdzania tego i wyświetlenia komunikatu String zgodnie z wyjściem warunku.

Oto kod z zaznaczeniem katalogu w pliku „Dir.cii':

#!/bin/bash
File =/home/linuxhint/test
jeśli [-d „$ plik”]; Następnie
echo "Directory $ Plik istnieje!"
w przeciwnym razie
Echo „Plik katalogu $ nie istnieje!"
fi

Aby uruchomić kod wykonać:

$ bash reż.cii
Linuxhint@u22: ~ $ bash dir.cii
Direktory/Home/Linuxhint/Test istnieje!

Oraz ujemny kod testowy i wyjście:

#!/bin/bash
File =/home/linuxhint/test
Jeśli [ ! -d „$ plik”]; Następnie
Echo „Plik katalogu $ nie istnieje!"
w przeciwnym razie
echo "Directory $ Plik istnieje!"
fi
Linuxhint@u22: ~ $ bash dir.cii
katalog/home/linuxhint/test nie istnieje!

Wniosek

Chodzi o użycie skryptów bash do sprawdzenia, czy istnieją pliki i katalogi. Użyliśmy również kodu bezpośredniego w konsoli Bash, wykorzystując operacje testowe i operatory logiczne.