W większości przypadków możemy znaleźć sytuację, w której może być konieczne wykonanie akcji, która sprawdzi, czy plik istnieje, czy nie.
W Bash możemy użyć „polecenia test”, aby sprawdzić, czy plik istnieje i określić jego typ.
Poniżej znajduje się składnia polecenia test, a my można użyć dowolnego z następujących poleceń:
Jesteśmy zobowiązani do użycia pojedynczego polecenia „[” w nawiasie, aby nasz skrypt był przenośny dla wszystkich powłok POSIX. Zaktualizowana wersja polecenia test zawiera podwójne nawiasy „[[„, które są obsługiwane w większości nowoczesnych systemów używających Bash, Zsh i Ksh jako domyślnej powłoki.
Sprawdź, czy plik istnieje
Podczas sprawdzania, czy plik istnieje, najczęściej używanymi operatorami plików są -e i -f. Opcja „-e” służy do sprawdzania, czy plik istnieje niezależnie od typu, natomiast opcja „-f” służy do zwracania wartości true tylko wtedy, gdy plik jest zwykłym plikiem (nie katalogiem ani urządzeniem).
Najpowszechniejszą opcją sprawdzania, czy plik istnieje, czy nie, jest użycie polecenia test z instrukcją warunkową „if”.
Poniżej znajdują się przykłady sprawdzania, czy plik „read_file”. txt ”istnieje:
Metoda 1
Metoda 2
Metoda 3
Dane wyjściowe
Dane wyjściowe dla wszystkich trzech metod będą takie jak poniżej, ponieważ w katalogu znajduje się plik (read_file.txt):
read_file.txt exist
Jeśli chcemy wykonać akcję, która da wynik na podstawie tego, czy plik istnieje, czy nie, możemy użyć konstrukcji if / then w następujący sposób:
Przykład
Wyjście
read_file.txt exist
Możemy również użyć polecenia test bez instrukcji if. Możemy użyć dowolnej z następujących metod:
Metoda 1
Metoda 2
Metoda 3
Dane wyjściowe
Dane wyjściowe dla wszystkich trzech metod będą takie, jak poniżej, ponieważ mamy plik (read_file.txt) obecny w katalogu:
read_file.txt exist
Przykład
W przeciwieństwie do & &, instrukcja po || operator jest wykonywany tylko wtedy, gdy kod zakończenia polecenia testowego to „false”.
Przykład
Dane wyjściowe
read_file.txt exist
Są to powszechnie używane metody w Bash do sprawdzania, czy plik istnieje.
Sprawdź, czy katalog istnieje
Operator „-d” pozwala nam sprawdzić, czy plik jest katalogiem, czy nie.
Poniżej przedstawiono metody sprawdzania, czy katalog „Javatpoint” istnieje:
Metoda 1
Metoda 2
Uwaga: możemy także użyć podwójnych nawiasów „[[” zamiast pojedynczego nawiasu „[” ” .
Dane wyjściowe
Dane wyjściowe dla obu powyższych metod będą takie jak poniżej, ponieważ mamy katalog (o nazwie Javatpoint) obecny w określonej lokalizacji:
Javatpoint is a directory
Sprawdź, czy plik nie istnieje
Wyrażenie testowe można zanegować za pomocą wykrzyknika (operator! -logiczny NOT). Zobacz poniższy przykład:
Przykład
Powyższy skrypt można również zapisać w następujący sposób:
Dane wyjściowe
missing_read_file.txt unavailable
Operatory testu plików
Polecenia testowe obejmują następujące operatory plików, które pozwalają nam test dla określonych typów plików:
-b FileReturns | „Prawda” jeśli PLIK istnieje jako blok specjalny plik. |
-c FileReturns | „Prawda”, jeśli PLIK istnieje jako plik znaków specjalnych. |
-d FileReturns | „True”, jeśli PLIK istnieje jako katalog. |
-e FileReturns | „True „jeśli PLIK istnieje jako plik, niezależnie od typu (węzeł, katalog, gniazdo itp.). |
-f FileReturns | „ True ” jeśli PLIK istnieje jako zwykły plik (nie jest katalogiem ani urządzeniem). |
-G FileReturns | „Prawda”, jeśli PLIK istnieje i zawiera ta sama grupa co użytkownik uruchamia comm i. |
-h FileReturns | „True”, jeśli PLIK istnieje jako dowiązanie symboliczne. |
-g FileReturns | „True”, jeśli PLIK istnieje i zawiera ustawioną flagę set-group-id (sgid). |
-k FileReturns | „Prawda”, jeśli PLIK istnieje i zawiera ustawioną trwałą flagę bitową. |
-L FileReturns | „Prawda”, jeśli PLIK istnieje jako dowiązanie symboliczne. |
-O FileReturns | „Prawda”, jeśli PLIK istnieje i jest własnością użytkownika, który uruchamia polecenie. |
-p FileReturns | „Prawda”, jeśli PLIK istnieje jako potok. |
– r FileReturns | „True”, jeśli PLIK istnieje jako plik do odczytu. |
-S FileReturns | „True”, jeśli FILE istnieje jako gniazdo. |
-s FileReturns | „True”, jeśli PLIK istnieje i ma niezerowy rozmiar. |
-u FileReturns | „Prawda”, jeśli PLIK istnieje, a flaga set-user-id (suid) jest ustawiona. |
-w FileReturns | „True”, jeśli PLIK istnieje jako plik z możliwością zapisu. |
-x FileReturns | „True”, jeśli PLIK istnieje jako plik wykonywalny. |