Bash Sprawdź, czy plik istnieje – samouczek i polecenia do użycia

Podczas tworzenia skryptu bash możesz spotkać się z sytuacją, w której musisz sprawdzić, czy plik istnieje, czy nie wykonać z nim jakąś czynność. Możesz użyć polecenia test, aby sprawdzić, czy plik istnieje i jakiego jest typu.

W tym samouczku pokażemy, jak sprawdzić, czy plik istnieje w systemach operacyjnych opartych na Linuksie.

Podstawowa składnia polecenia testowego

Podstawowa składnia polecenia testowego służącego do sprawdzenia, czy plik istnieje, jak pokazano poniżej:

test -e file

Lub

test -f file

Gdzie:

  • -e
    Ta opcja sprawdzi, czy plik istnieje niezależnie od typu.
  • -f
    Ta opcja sprawdzi, czy plik istnieje tylko wtedy, gdy PLIK jest zwykłym plikiem.

Powinieneś zobaczyć stronę podręcznika man polecenia test, jak pokazano poniżej:

man test

Powinieneś zobaczyć następujący ekran :

Sprawdź, czy plik istnieje, używając wiersza poleceń

W tej sekcji pokażemy Ci jak sprawdzić, czy plik istnieje, używając wiersza poleceń:

Uruchom następujące polecenie, aby sprawdzić, czy plik o nazwie / etc / fstab istnieje (T rue):

test -f /etc/fstab

Następnie uruchom następujące polecenie, aby ustawić kod zakończenia na 0 lub 1, gdy test zakończy się pomyślnie lub nie.

echo $?

Wynik:

0

Dane wyjściowe to 0, co oznacza, że plik / etc / fstab istnieje.

Możesz także użyj następującego polecenia, aby sprawdzić, czy plik istnieje:


echo $0

Wynik:

0

Następnie uruchom następujące polecenie, aby sprawdzić, czy plik / etc / fabab istnieje ( Fałsz).

test -f /etc/fabab
echo $?

Wyjście:

1

Wynik to 1, co oznacza, że plik / etc / fabab nie istnieje.

Ty może również sprawdzić, czy plik o nazwie /etc/rc.local istnieje lub nie używa warunkowego wykonania bash, jak pokazano poniżej:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Lub

&& echo "Exists" || echo "Not Exists"

Jeśli plik o nazwie /etc/rc.local istnieje, powinieneś zobaczyć następujące dane wyjściowe:

Exists

Możesz również sprawdzić, czy istnieje wiele plików, używając jednego polecenia:

&& echo "both files exist"

Lub

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Powinieneś zobaczyć następujące dane wyjściowe:

both files exist

Sprawdź, czy plik istnieje w Bash

W tej sekcji utworzymy skrypt bash i sprawdzimy, czy plik istnieje, czy nie, drukując wiadomość.

Stwórzmy plik o nazwie test.sh i sprawdźmy, czy plik /etc/rc.local istnieje lub nie istnieje:

nano test.sh

Dodaj następujące wiersze:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Zapisz i zamknij plik, a następnie uruchom skrypt za pomocą następującego polecenia:

bash test.sh

Powinien pojawić się następujący wynik:

The file "/etc/rc.local" exists.

Teraz stwórzmy plik test.sh i sprawdźmy, czy plik / etc / rc.localad istnieje z nie:

nano test.sh

Dodaj następujące wiersze:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Zapisz i zamknij plik, a następnie uruchom skrypt za pomocą następującego polecenia:

bash test.sh

Powinieneś zobaczyć następujące dane wyjściowe:

The file "/etc/rc.localad" is not exists.

Możesz także sprawdzić, czy plik istnieje, czy nie, i wykonać na nim jakąś czynność w skrypcie bash.

Na przykład znajdź plik o nazwie / etc / hosts i skopiuj go do katalogu / opt, jeśli plik istnieje.

Aby to zrobić, utwórz plik o nazwie test.sh:

nano test.sh

Dodaj następujące wiersze:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Zapisz i zamknij plik, a następnie uruchom skrypt za pomocą następującego polecenia:

Teraz przetestuj katalog / opt za pomocą następującego polecenia:

ls /opt/hosts

Plik hosts powinien pojawić się w następującym wyniku:

/opt/hosts

Możesz także użyć wyrażenia! aby sprawdzić, czy plik nie istnieje.

Na przykład uruchom następujące polecenie, aby sprawdzić, czy plik / etc / hosting nie istnieje:

&& echo "File does not exist"

Lub

test ! -f /etc/hosting && echo "File does not exist"

Powinieneś zobaczyć następujące dane wyjściowe:

File does not exist

Sprawdź, czy katalog istnieje

Możesz również sprawdzić, czy katalog istnieje, czy nie, używając opcji -d.

Na przykład sprawdź, czy katalog / etc / apache2 istnieje, czy nie.

&& echo "Directory is exists"

Lub

test -d /etc/apache2 && echo "Directory is exists"

Powinien pojawić się następujący wynik:

Directory is exists

Możesz także utworzyć skrypt bash z wyrażeniami warunkowymi, aby sprawdzić, czy katalog istnieje, czy nie.

Utwórz plik o nazwie test.sh, jak pokazano poniżej:

nano test.sh

Dodaj następujące wiersze:

Zapisz i zamknij plik, gdy skończysz. Następnie nadaj odpowiednie uprawnienia za pomocą następującego polecenia:

chmod 755 test.sh

Następnie sprawdź, czy katalog / etc / nginx jest dostępny, czy nie następującym poleceniem:

./test.sh /etc/nginx

Powinieneś zobaczyć następujące dane wyjściowe:

Directory /etc/nginx/ exists.

Następnie sprawdź, czy katalog / etc / linux jest dostępny, czy nie, za pomocą następującego polecenia:

./test.sh /etc/linux

Powinien pojawić się następujący wynik:

Directory /etc/linux does not exists

Operatory testowania plików w Bash

Następujące operatory testowania plików pomogą Ci sprawdzić, czy „plik” istnieje i ma określone typy:

  • -b
    PLIK istnieje i jest specjalnym blokiem
  • -c
    PLIK istnieje i ma specjalny znak
  • -d
    PLIK istnieje i jest katalog
  • -e
    PLIK istnieje
  • -f
    PLIK istnieje i jest zwykłym plikiem
  • -g
    PLIK istnieje i jest set-group-ID
  • -G
    PLIK np ists i należy do efektywnego identyfikatora grupy
  • -h
    PLIK istnieje i jest dowiązaniem symbolicznym (tak samo jak -L)
  • -k
    PLIK istnieje i ma jego zestaw bitów lepkich
  • -L
    PLIK istnieje i jest dowiązaniem symbolicznym (tak samo jak -h)
  • -O
    PLIK istnieje i jest własnością efektywnego użytkownika ID
  • -p
    PLIK istnieje i jest potokiem nazwanym
  • -r
    PLIK istnieje i udzielono prawa do odczytu
  • -s
    PLIK istnieje i ma rozmiar większy niż zero
  • -S
    PLIK istnieje i jest gniazdem
  • -u
    PLIK istnieje i jego bit set-user-ID jest ustawiona
  • -w
    PLIK istnieje i udzielono mu prawa do zapisu
  • -x
    PLIK istnieje i przyznano uprawnienie do wykonywania (lub wyszukiwania)

Wniosek

Leave a Reply

Dodaj komentarz

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