logo

Сценарії Bash – як перевірити, чи існує файл

У цій статті ми напишемо сценарій bash, щоб перевірити, чи існують файли чи ні.

Синтаксис:

  • перевірка [вираз]
  • [ вираз ]
  • [[ вираз ]]

Тут у виразі пишемо параметр і ім'я файлу . Давайте розглянемо деякі параметри, які можна використовувати у виразі: –

  • f: Він повертає True, якщо файл існує як звичайний (звичайний) файл.
  • -d: повертає True, якщо каталог існує. -e : повертає True, якщо існує будь-який тип файлу. -c : повертає True, якщо символьний файл існує. -r : повертає True, якщо файл, який можна читати, існує.
  • в : Повертає True, якщо файл, доступний для запису, існує .
  • -x : повертає True, якщо виконуваний файл існує. -p : повертає True, якщо файл існує як канал. -S: повертає True, якщо файл існує як сокет. -s: повертає True, якщо файл існує і розмір файлу не дорівнює нулю. -L: повертає True, якщо файл символічного посилання існує . -g : повертає True, якщо файл існує та встановлено прапорець ідентифікатора групи утримування. -G : я t повертає True, якщо файл існує та містить той самий ідентифікатор групи, що й у процесі. -k : повертає True, якщо файл існує та встановлено позначку закріпленого біта.

Тепер є ще кілька параметрів для порівняння між двома файлами.



    -ef: повертає True, якщо обидва файли існують і вказують на той самий файл.

приклад:

FirstFile -ef SecondFile>
    -nt: повертає True, якщо FirstFile є новішим за Secondfile.

приклад:

які місяці q3
FirstFile -nt FileOld>
    -ot: повертає True, якщо FirstFile старший за SecondFile.

приклад:

FirstFile -ot SecondFile>

Розглянемо кілька прикладів на основі синтаксису:

    [ вираз ]: спочатку створіть файл під назвою FirstFile.sh і напишіть у ньому наступний сценарій
#!/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>

Тепер збережіть і запустіть файл за допомогою такої команди

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

Вихід:

Вихід

Примітка: Оскільки File.txt присутній у системі. Отже, надруковано Файл існує.

    test [вираз]: тепер змініть наведений вище сценарій у FirstFile.sh наступним чином
#!/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>

Тепер знову збережіть і запустіть файл за допомогою такої команди

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

Вихід:

Вихід

Примітка: Оскільки File2.txt відсутній у системі. Отже, надруковано Файл не існує.

    [[ вираз ]]: Знову змініть наведений вище сценарій у FirstFile.sh наступним чином
#!/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>

Тепер знову збережіть і запустіть файл за допомогою такої команди

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

Вихід:

Вихід

обхід попереднього замовлення

Примітка: Оскільки File3.txt присутній у системі. Отже, надруковано File is exist .

Розглянемо приклад на основі параметрів:

    Використання параметра -d: Створіть файл під назвою FirstDir.sh і напишіть у ньому наступний сценарій
!/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>

Тепер збережіть і запустіть файл за допомогою такої команди

sql вибрати як
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Вихід:

Вихід

Примітка: Оскільки GFG_dir присутній у системі. Отже, надрукований каталог існує.

Аналогічно можна використовувати -f , -Це є , , , -c тощо (відповідно до їх використання) замість для перевірки існування різних типів файлів.

Розглянемо приклад, заснований на порівнянні двох файлів:

  • Використання -нт параметр

Створіть файл із назвою Comparison_File.sh і напишіть наступний сценарій

#!/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>

Тепер збережіть і запустіть файл за допомогою такої команди

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

Вихід:

Вихід

Примітка: Оскільки обидва файли присутні в системі, а New_File.txt є новішим за Old_File.txt

Давайте подивимося приклад Перевірити, якщо файл не існує:

Створіть файл під назвою Check_Exist.sh і напишіть у ньому наступний сценарій

#!/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>

Тепер збережіть і запустіть файл за допомогою такої команди

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

Вихід:

Вихід

Примітка: GFG.txt відсутній у системі. Отже, він надрукує Файл не існує

Розглянемо приклад без використання умови If-else:

Створіть файл під назвою Geeks_File.sh і напишіть у ньому наступний сценарій

масив, відсортований у java
#!/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'>

Тепер збережіть і запустіть файл за допомогою такої команди

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

Вихід:

Вихід

Примітка: Оскільки файл GFG_File.txt присутній у системі. Отже, надруковано File is exist .