Wiele razy podczas pisania skryptów powłoki możesz znaleźć się w sytuacji, w której musisz wykonać akcję w oparciu o to, czy plik istnieje, czy nie .
W Bash możesz użyć polecenia test, aby sprawdzić, czy plik istnieje i określić typ pliku.
Polecenie test przyjmuje jedną z następujących form składni:
Jeśli chcesz, aby Twój skrypt był przenośny, powinieneś użyć starego testu ; then echo "$FILE exists."fi
Jeśli chcesz wykonać inną akcję w zależności od tego, czy plik istnieje, czy nie, po prostu użyj konstrukcji if / then:
Możesz także użyć polecenia test bez instrukcji if. Polecenie za operatorem &&
zostanie wykonane tylko wtedy, gdy kod zakończenia polecenia testowego to prawda,
Jeśli chcesz uruchom serię poleceń po operatorze &&
, po prostu umieść polecenia w nawiasach klamrowych, oddzielając je ;
lub &&
:
W przeciwieństwie do &&
, instrukcja po Operator ||
zostanie wykonany tylko wtedy, gdy kod zakończenia polecenia testowego to false
.
Sprawdź, czy katalog istnieje #
Operatory -d
pozwalają sprawdzić, czy plik jest czy nie.
Na przykład, aby sprawdzić, czy katalog /etc/docker
istnieje, należy użyć:
Możesz także użyć podwójnych nawiasów ; then echo "$FILE does not exist."fi
Tak jak powyżej:
Sprawdź, czy istnieje wiele plików #
Zamiast używać skomplikowanych zagnieżdżonych konstrukcji if / else, możesz użyć -a
(lub &&
z ; then echo "Both files exist."fi
Równoważne warianty bez użycia instrukcji IF:
Operatory testu plików #
Polecenie test zawiera następujące operatory FILE, które umożliwiają testowanie określonych typów plików:
-
-b
FILE
– Prawda, jeśli PLIK istnieje i jest specjalnym plikiem blokowym. -
-c
FILE
– Prawda jeśli PLIK istnieje i jest plikiem znaków specjalnych. -
-d
FILE
– Prawda, jeśli PLIK istnieje i jest katalogiem. -
-e
FILE
– Prawda, jeśli PLIK istnieje i jest plikiem, niezależnie od typu (węzeł, katalog, gniazdo itp.). -
-f
FILE
– Prawda, jeśli PLIK istnieje i jest zwykłym plikiem (nie katalogiem ani urządzeniem). -
-G
FILE
– Prawda, jeśli PLIK istnieje i ma tę samą grupę co użytkownik uruchamiający polecenie. -
-h
FILE
– Prawda, jeśli PLIK istnieje i jest dowiązaniem symbolicznym. -
-g
FILE
– Prawda, jeśli PLIK istnieje i ma ustawioną flagę set-group-id (sgid
). -
-k
FILE
– Prawda, jeśli PLIK istnieje i ma ustawioną lepką flagę bitową. -
-L
– Prawda, jeśli PLIK istnieje i jest dowiązaniem symbolicznym. -
-O
FILE
– Prawda, jeśli PLIK istnieje i należy do użytkownika uruchamiającego polecenie. -
-p
FILE
– Prawda, jeśli PLIK istnieje i jest potokiem. -
-r
FILE
– Prawda, jeśli PLIK istnieje i można go odczytać. -
-S
FILE
– Prawda, jeśli PLIK istnieje i jest gniazdem. -
-s
FILE
– Prawda, jeśli PLIK istnieje i ma niezerowy rozmiar. -
-u
FILE
– Prawda, jeśli PLIK istnieje i ustawiona jest flaga set-user-id (suid
). -
-w
FILE
– Prawda, jeśli PLIK istnieje i można go zapisać. -
-x
FILE
– Prawda, jeśli PLIK istnieje i jest exe nadaje się do krojenia.
Wniosek #
W tym przewodniku pokazaliśmy, jak sprawdzić, czy plik lub katalog istnieje w Bash.