[PL] Tutorial porządnego pisania skryptów bash - #1 Wstęp, dobre praktyki i przydatne narzędzie
Spisu treści:
- Sprawdź, czy plik istnieje
- Sprawdź, czy istnieje katalog
- Sprawdź, czy plik nie istnieje
- Sprawdź, czy istnieje wiele plików
- Operatorzy testowania plików
- Wniosek
Wiele razy podczas pisania skryptów Shell 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 testowego, aby sprawdzić, czy plik istnieje i określić typ pliku.
Polecenie testowe przyjmuje jedną z następujących form składni:
Sprawdź, czy plik istnieje
Podczas sprawdzania, czy plik istnieje, najczęściej używanymi operatorami PLIKÓW są
-e
i
-f
. Pierwszy sprawdzi, czy plik istnieje niezależnie od typu, a drugi zwróci prawdę tylko wtedy, gdy PLIK jest zwykłym plikiem (nie katalogiem ani urządzeniem).
Najbardziej czytelną opcją przy sprawdzaniu, czy plik istnieje, jest użycie polecenia testowego w połączeniu z instrukcją if. Każdy z poniższych fragmentów sprawdzi, czy plik
/etc/resolv.conf
istnieje:
FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi
Jeśli chcesz wykonać inną akcję w zależności od tego, czy plik istnieje, czy po prostu użyj konstrukcji if / then:
FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi
Zawsze używaj podwójnych cudzysłowów, aby uniknąć problemów z plikami zawierającymi spacje w ich nazwach.
Możesz także użyć polecenia testowego bez instrukcji if. Polecenie po operatorze
&&
zostanie wykonane tylko wtedy, gdy status wyjścia polecenia testowego jest prawdziwy,
test -f /etc/resolv.conf && echo "$FILE exist"
&& echo "$FILE exist"
] && echo "$FILE exist"
&& { echo "$FILE exist"; cp "$FILE" /tmp/; }
W przeciwieństwie do
&&
, oświadczenie po
||
operator zostanie wykonany tylko wtedy, gdy status wyjścia polecenia testowego to
false
.
&& echo "$FILE exist" || echo "$FILE does not exist"
Sprawdź, czy istnieje katalog
Operatory
-d
pozwalają sprawdzić, czy plik jest katalogiem, czy nie.
Na przykład, aby sprawdzić, czy istnieje katalog
/etc/docker
, należy użyć:
FILE=/etc/docker if; then echo "$FILE is a directory" fi
&& echo "$FILE is a directory"
Możesz także użyć podwójnych nawiasów
, 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));
Sprawdź, czy plik nie istnieje
Podobnie jak w wielu innych językach, wyrażenie testowe można zanegować za pomocą
!
(wykrzyknik) logiczny nie operator:
FILE=/etc/docker if; then echo "$FILE does not exist" fi
Tak samo jak powyżej:
&& echo "$FILE does not exist"
Sprawdź, czy istnieje wiele plików
Zamiast używać skomplikowanych zagnieżdżonych konstrukcji, jeśli / else można użyć opcji
-a
(lub
&&
with
; then echo "$FILE is a directory" fi
FILE=/etc/docker if; then echo "$FILE is a directory" fi
Równoważne warianty bez użycia instrukcji IF:
&& echo "both files exist"
Operatorzy testowania plików
Polecenie test zawiera następujące operatory PLIKÓW, które umożliwiają testowanie określonych typów plików:
-
-b
FILE
- Prawda, jeśli PLIK istnieje i jest blokowym plikiem specjalnym.-c
FILE
- Prawda, jeśli PLIK istnieje i jest plikiem ze znakami specjalnymi.-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ą flagę lepkiego bitu.-L
FILE
- Prawda, jeśli PLIK istnieje i jest dowiązaniem symbolicznym.-O
FILE
- Prawda, jeśli PLIK istnieje i jest własnością użytkownika uruchamiającego polecenie.-p
FILE
- Prawda, jeśli PLIK istnieje i jest potokiem.-r
FILE
- Prawda, jeśli PLIK istnieje i jest czytelny.-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 istnieje flaga set-user-id (suid).-w
FILE
- Prawda, jeśli PLIK istnieje i jest zapisywalny.-x
FILE
- Prawda, jeśli PLIK istnieje i jest wykonywalny.
Wniosek
W tym przewodniku pokazaliśmy, jak sprawdzić, czy plik lub katalog istnieje za pomocą Bash.
terminal bashJak sprawdzić lub sprawdzić, gdzie link lub adres URL przekierowuje do
Te bezpłatne narzędzia online pomagają znaleźć, czy adres URL, który Cię przekierowuje chcesz sprawdzić idzie do wybranego miejsca docelowego, czy nie. Znajdź miejsce, do którego przekierowuje dany URL lub link.
Jak sprawdzić, czy ciąg zawiera podciąg w bash
Jedną z najczęstszych operacji podczas pracy z ciągami w Bash jest ustalenie, czy ciąg zawiera inny ciąg. W tym artykule pokażemy kilka sposobów sprawdzania, czy łańcuch zawiera podłańcuch.
Jak sprawdzić, czy plik lub katalog istnieje w Pythonie
Podczas pisania skryptów w języku Python możesz wykonać określone działanie tylko wtedy, gdy plik lub katalog istnieje, czy nie. Na przykład możesz chcieć odczytać lub zapisać dane w pliku konfiguracyjnym lub utworzyć plik tylko wtedy, gdy już nie istnieje.