logo

Skrypty Bash – jak sprawdzić, czy plik istnieje

W tym artykule napiszemy skrypt bash, aby sprawdzić, czy pliki istnieją, czy nie.

Składnia:

  • test [wyrażenie]
  • [ wyrażenie ]
  • [[ wyrażenie ]]

Tutaj w wyrażeniu piszemy parametr I Nazwa pliku . Zobaczmy kilka parametrów, których można użyć w wyrażeniu: –

  • F: Zwraca True, jeśli plik istnieje jako zwykły (zwykły) plik.
  • -d: zwraca True, jeśli katalog istnieje. -e: Zwraca True, jeśli istnieje jakikolwiek typ pliku. -c: Zwraca True, jeśli plik znakowy istnieje. -r: Zwraca True, jeśli istnieje plik możliwy do odczytania.
  • w : Zwraca True, jeśli istnieje plik zapisywalny .
  • -x: Zwraca True, jeśli istnieje plik wykonywalny. -p: Zwraca True, jeśli plik istnieje jako potok. -S: Zwraca True, jeśli plik istnieje jako gniazdo. -s: zwraca True, jeśli plik istnieje, a jego rozmiar nie wynosi zero. -L: Zwraca True, jeśli istnieje plik dowiązania symbolicznego . -g: Zwraca True, jeśli plik istnieje i ustawiona jest flaga hold set group id.. -G: I t zwraca True, jeśli plik istnieje i zawiera ten sam identyfikator grupy, który jest w trakcie przetwarzania. -k: Zwraca True, jeśli plik istnieje i ustawiona jest flaga bitu trwałego.

Teraz dostępnych jest więcej parametrów umożliwiających porównanie obu plików.



    -ef: Zwraca True, jeśli oba pliki istnieją i wskazują ten sam plik.

Przykład :

FirstFile -ef SecondFile>
    -nt: Zwraca True, jeśli Pierwszy Plik jest nowszy niż Drugi Plik.

Przykład :

double do napisania Java
FirstFile -nt FileOld>
    -ot: Zwraca wartość True, jeśli plik FirstFile jest starszy niż SecondFile.

Przykład:

FirstFile -ot SecondFile>

Weźmy kilka przykładów opartych na składni:

    [ wyrażenie ]: Najpierw utwórz plik o nazwie FirstFile.sh i napisz w nim następujący skrypt
#!/bin/bash # using [ expression ] syntax and in place # of File.txt you can write your file name if [ -f 'File.txt' ]; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

Teraz zapisz i uruchom plik za pomocą następującego polecenia

$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Wyjście :

Wyjście

Notatka: Ponieważ plik File.txt jest obecny w systemie. Zatem wydrukowano Plik istnieje.

    test [wyrażenie]: Teraz zmodyfikuj powyższy skrypt w FirstFile.sh w następujący sposób
#!/bin/bash # using test expression syntax and in place # of File2.txt you can write your file name if test -f 'File2.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

Teraz ponownie zapisz i uruchom plik za pomocą następującego polecenia

wielkaandra
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Wyjście :

Wyjście

Notatka: Ponieważ w systemie nie ma pliku File2.txt. Wypisano więc, że plik nie istnieje.

    [[ wyrażenie ]]: Ponownie zmodyfikuj powyższy skrypt w FirstFile.sh w następujący sposób
#!/bin/bash # using [[ expression ]] syntax and in place # of File3.txt you can write your file name if test -f 'File3.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

Teraz ponownie zapisz i uruchom plik za pomocą następującego polecenia

 $ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Wyjście :

Wyjście

Notatka: Ponieważ plik File3.txt jest obecny w systemie. Wypisano więc, że plik istnieje.

Zobaczmy przykład oparty na parametrach:

    Używając parametru -d: Utwórz plik o nazwie FirstDir.sh i napisz w nim następujący skrypt
!/bin/bash if [[ -d 'GFG_dir' ]] ; # Here GFG_dir is directory and in place of GFG_dir you can write your Directory name then echo 'Directory is exist' # If GFG_dir exist then it will be printed else echo 'Directory is not exist' # If GFG_dir is not exist then it will be printed fi>

Teraz zapisz i uruchom plik za pomocą następującego polecenia

wykonaj pętlę while w Javie
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Wyjście :

Wyjście

Notatka: Ponieważ katalog GFG_dir jest obecny w systemie. Zatem wydrukowany katalog istnieje.

Podobnie możesz użyć -F , -To jest , -w , -R , -C ,itp. (według ich zastosowań) zamiast -D do sprawdzania istnienia różnych typów plików.

Zobaczmy przykład oparty na porównaniu dwóch plików:

  • Za pomocą -nie parametr

Utwórz plik o nazwie Comparison_File.sh i napisz następujący skrypt

#!/bin/bash # New_file.txt and Old_File.txt are names of two files. if [[ 'New_File.txt' -nt 'Old_File.txt' ]] ; then # This will be printed if Condition is true echo 'New_File.txt is newer than Old_File.txt' else # This will be printed if Condition is False echo 'New_File.txt is not newer than Old_File.txt' fi>

Teraz zapisz i uruchom plik za pomocą następującego polecenia

 $  chmod +x ./Comparison_File.sh $ ./Comparison_File.sh>

Wyjście :

Wyjście

Notatka: Ponieważ oba pliki są obecne w systemie, a New_File.txt jest nowszy niż Old_File.txt

huśtawka w Javie

Zobaczmy przykład Sprawdź, czy plik nie istnieje:

Utwórz plik o nazwie Check_Exist.sh i napisz w nim następujący skrypt

#!/bin/bash # using ! before -f parameter to check if # file does not exist if [[ ! -f 'GFG.txt' ]] ; then # This will printed if condition is True echo 'File is not exist' else # This will be printed if condition is False echo 'File is exist' fi>

Teraz zapisz i uruchom plik za pomocą następującego polecenia

 $ chmod +x ./Check_Exist.sh $  ./Check_Exist.sh>

Wyjście :

Wyjście

Notatka: Plik GFG.txt nie jest obecny w systemie. Wydrukuje więc plik nie istnieje

Zobaczmy przykład bez użycia warunku If-else:

Utwórz plik o nazwie Geeks_File.sh i napisz w nim następujący skrypt

#!/bin/bash # If File exist then first statement will be # printed and if it is not exist then 2nd # statement will be printed. [ -f 'GFG_File.txt' ] && echo 'File is exist' || echo 'File is not exist'>

Teraz zapisz i uruchom plik za pomocą następującego polecenia

 $ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh>

Wyjście :

Wyjście

Notatka: Ponieważ w systemie obecny jest plik GFG_File.txt. Wypisano więc, że plik istnieje.