Как проверить, существует ли файл в bash

How Check If File Exists Bash



Есть несколько способов проверить доступность файла в Linux. Команда test в сценариях bash - один из ключевых подходов к проверке существования файла.
Основное внимание в этом руководстве уделяется обсуждению существования файла в вашей системе с помощью сценариев bash:

Как проверить наличие файла с помощью сценария bash:

1) Путем ввода имени файла в терминале:







Во-первых, нам нужно создать файл сценария bash, используя следующую команду:



$трогатьtestfile.sh

Имя созданного мной файла - testfile.sh, расширение .sh указывает на файл сценария оболочки:







Откройте testfile.sh в любом текстовом редакторе. Затем напишите сценарий, сохраните его, нажав сохранить.

Один из способов - найти файл, запросив имя файла у пользователя в терминале.



Использовать -f чтобы проверить наличие файла.

Напишите сценарий ниже:

#! / bin / bash
выбросил 'Введите свое имя файла'
читатьnewfile1
если [ -f '$ newfile1' ]
тогда
выбросил 'Файл найден'
еще
выбросил 'Файл не найден'
быть

Вернитесь в терминал и запустите файл для вывода на печать:

./filename.sh

В терминале будет отображаться сообщение об отказе в разрешении.

Сделайте его исполняемым, выполнив следующую команду:

$chmod+ x testfile.sh

Введите имя файла, и он распечатает результат:

2) Введя имя файла при написании скрипта:
Другой способ найти файл, указав имя файла при написании скрипта. У нас есть три способа проверить доступность файла. Первый использует команду test, второй использует if с выражением в квадратных скобках, а третий также использует if, но с двойными квадратными скобками, как показано ниже:

  1. тест ВЫРАЖЕНИЕ.
  2. если [ВЫРАЖЕНИЕ]
  3. если [[ВЫРАЖЕНИЕ]]

Давайте разберемся с этим на примерах:

1) test [Expression]
Скопируйте данный скрипт и вставьте его в редактор, сохраните:

#! / bin / bash
имя файла= файл1
если тестовое задание -f '$ filename';
тогда
выбросил '$ файлНайдено.'
еще
выбросил '$ файлне был найден '
быть

Выход:

Так как в моем каталоге такого файла нет, код отображает сообщение Файл не найден.

2) если [Выражение]

Скопируйте следующий скрипт, чтобы проверить, существует ли файл:

#! / bin / bash
имя файла= myfile.txt
если [ -f '$ filename' ];
тогда
выбросил '$ filenameНайдено.'
еще
выбросил 'имя файла не найдено'
быть

Выход:

3) если [[Выражение]]

Скопируйте написанный ниже скрипт и вставьте его в терминал:

#! / bin / bash
имя файла= testfile
если [[ -f '$ filename' ]];
тогда
выбросил '$ filenameНайдено.'
еще
выбросил '$ filenameне был найден '
быть

Выход:

Чтобы проверить каталог:

3) Путем ввода имени каталога при написании скрипта

Использовать -d флаг для проверки существования каталога.

В приведенном ниже скрипте dir11 - это переменная, в которой вы храните файл, который вы нашли; в этом примере я хочу проверить, существует ли имя каталога testDir.

#! / bin / bash
dir11= testDir
если [ -d '$ dir11' ]
тогда
выбросил 'Каталог найден'
еще
выбросил 'Каталог не найден'
быть

Выход:

2) Введя имя файла в терминале:
Когда вы запускаете команду в терминале, чтобы проверить, существует ли каталог или нет, вам необходимо ввести имя каталога, который вы ищете:

#! / bin / bash
выбросил 'введите имя вашего каталога.'
читатьDir1
если [ -d 'Dir1' ]
тогда
выбросил 'каталог был найден'
еще
выбросил 'каталог не найден'
быть

Выход:

Проверка файла без использования оператора if:

Команду test можно выполнить без оператора if. Вывод будет отображаться только в том случае, если файл существует; иначе не было бы вывода:

Напишите сценарий:

  1. тестовое задание -fmyfile.txt&& выбросил 'файл был найден'

  2. [ -fmyfile.txt] && выбросил '$ файлбыл найден.'

  3. [[ -fmyfile.txt]] && выбросил '$ файлбыл найден.'

Выход:

Проверка каталога без использования оператора if:

Используйте приведенные ниже инструкции, чтобы проверить, существует ли каталог:

  1. [[ -dtestDir]] && выбросил 'каталог действительно существует'

  2. 2) [ -dtestDir] && выбросил 'каталог действительно существует'

Выход:

Проверка нескольких файлов / каталогов:

1) Проверка нескольких файлов с помощью операторов if:
Используйте флаг -a для проверки существования различных файлов вместо использования вложенных операторов if / else:

#! / bin / bash
если [ -fnew_file.txt -fnewfile.txt];тогда
выбросил «Оба файла существуют».
быть

Другой способ:

#! / bin / bash
если [[ -fnew_file.txt&& -fnewfile.txt]];тогда
выбросил «Оба файла существуют».
быть

Выход:

2) Проверка нескольких файлов без использования оператора if:
Используйте следующую инструкцию для одновременной проверки нескольких файлов без использования if:

  1. [[ -fnew_file.txt&& -fnewfile.txt]] && выбросилОба файла закрываются.

  2. [[ -fnew_file.txt&& -fnewfile.txt]] && выбросилОба файла закрываются.

Выход:

Заключение:

В этой статье показано, как использовать сценарий bash для проверки файла или каталога. Мы использовали разные варианты, чтобы проверить доступность файла. Во-первых, мы используем команду test с разными флагами. Затем мы узнали, как использовать if, вложенные if-else и без операторов if для проверки файла или каталога. Мы также рассмотрели, как проверить несколько файлов или каталогов.