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.