Jak sprawdzić czy plik lub katalog istnieje w Linux/Unix?
W skryptach często istnieje konieczność sprawdzenia przed wykonaniem jakieś akcji, czy dany plik istnieje czy też nie. Możemy tego dokonać przy pomocy instrukcji warunkowej if
wraz z parametrem -e
. Spójrzmy na poniższy przykład:
if [ -e plik-testowy.txt ]; then echo "plik istnieje" else echo "brak pliku" fi
Powyższy skrypt wyświetli komunikat: “plik istnieje
” jeżeli plik-testowy.txt istnieje, lub “brak pliku
” jeżeli pliku nie będzie.
Możemy również dodać jakąś akcję, np. gdy plik istnieje, zmień jego nazwę na archiwum.txt. Dla takiego przykładu skrypt wygląda następująco:
if [ -e plik-testowy.txt ]; then echo "zmieniam nazwę" mv plik-testowy.txt archiwum.txt fi
Poza parametrem -e istnieją jeszcze inne. Poniżej znajduje się lista najczęściej używanych:
if [ -a plik ]
– zwraca prawdę jeśli plik istnieje, fałsz gdy brak plikuif [ -d plik ]
– zwraca prawdę jeśli plik istnieje i jest katalogiem, w przeciwnym wypadku fałszif [ -e plik ]
– zwraca prawdę jeśli plik istnieje, fałsz gdy brak plikuif [ -f plik ]
– zwraca prawdę jeśli plik jest plikiem regularnym, fałsz w przeciwnym wypadkuif [ -h plik ]
– zwraca prawdę jeśli plik jest linkiem symbolicznym, fałsz w przeciwnym wypadkuif [ -r plik ]
– zwraca prawdę jeśli plik posiada uprawnienia do odczytu, fałsz w przeciwnym wypadkuif [ -s plik ]
– zwraca prawdę jeśli plik istnieje i nie jest pusty (rozmiar > 0), fałsz w przeciwnym wypadkuif [ -w plik ]
– zwraca prawdę jeśli plik posiada uprawnienia do zapisu, fałsz w przeciwnym wypadkuif [ -x plik ]
– zwraca prawdę jeśli plik posiada uprawnienia do uruchomienia, fałsz w przeciwnym wypadku
Pomogłeś pisz dalej
jak sprawdzić czy nazwa pliku wpisana przez uzytkownika istnieje? zadna komenda mi nie dziala
Proszę utworzyć plik sprawdz.sh o zawartości:
if [ -e $1 ]; then
echo “plik istnieje”
else
echo “brak pliku”
fi
Zapisać zmiany i nadać uprawnienia do pliku. Teraz z poziomu linii poleceń proszę wpisać np:
sprawdz.sh sprawdzanyplik.txt
jeżeli w sprawdzanej lokalizacji pliku brakuje to pojawi się komunikat: “brak pliku”.
Proszę teraz utworzyć plik: sprawdzanyplik.txt i jeszcze raz uruchomić polecenie:
sprawdz.sh sprawdzanyplik.txt
Tym razem skrypt powinien zwrócić komunikat: “plik istnieje”