Bash sprawdź, czy plik istnieje

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.

Write a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *