Основное внимание в этом руководстве уделяется обсуждению существования файла в вашей системе с помощью сценариев 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) test [Expression]
Скопируйте данный скрипт и вставьте его в редактор, сохраните:
имя файла= файл1
если тестовое задание -f '$ filename';
тогда
выбросил '$ файлНайдено.'
еще
выбросил '$ файлне был найден '
быть
Выход:
Так как в моем каталоге такого файла нет, код отображает сообщение Файл не найден.
2) если [Выражение]
Скопируйте следующий скрипт, чтобы проверить, существует ли файл:
#! / bin / bashимя файла= myfile.txt
если [ -f '$ filename' ];
тогда
выбросил '$ filenameНайдено.'
еще
выбросил 'имя файла не найдено'
быть
Выход:
3) если [[Выражение]]
Скопируйте написанный ниже скрипт и вставьте его в терминал:
#! / bin / bashимя файла= testfile
если [[ -f '$ filename' ]];
тогда
выбросил '$ filenameНайдено.'
еще
выбросил '$ filenameне был найден '
быть
Выход:
Чтобы проверить каталог:
3) Путем ввода имени каталога при написании скрипта
Использовать -d флаг для проверки существования каталога.
В приведенном ниже скрипте dir11 - это переменная, в которой вы храните файл, который вы нашли; в этом примере я хочу проверить, существует ли имя каталога testDir.
#! / bin / bashdir11= testDir
если [ -d '$ dir11' ]
тогда
выбросил 'Каталог найден'
еще
выбросил 'Каталог не найден'
быть
Выход:
2) Введя имя файла в терминале:
Когда вы запускаете команду в терминале, чтобы проверить, существует ли каталог или нет, вам необходимо ввести имя каталога, который вы ищете:
выбросил 'введите имя вашего каталога.'
читатьDir1
если [ -d 'Dir1' ]
тогда
выбросил 'каталог был найден'
еще
выбросил 'каталог не найден'
быть
Выход:
Проверка файла без использования оператора if:
Команду test можно выполнить без оператора if. Вывод будет отображаться только в том случае, если файл существует; иначе не было бы вывода:
Напишите сценарий:
- тестовое задание -fmyfile.txt&& выбросил 'файл был найден'
- [ -fmyfile.txt] && выбросил '$ файлбыл найден.'
- [[ -fmyfile.txt]] && выбросил '$ файлбыл найден.'
Выход:
Проверка каталога без использования оператора if:
Используйте приведенные ниже инструкции, чтобы проверить, существует ли каталог:
- [[ -dtestDir]] && выбросил 'каталог действительно существует'
- 2) [ -dtestDir] && выбросил 'каталог действительно существует'
Выход:
Проверка нескольких файлов / каталогов:
1) Проверка нескольких файлов с помощью операторов if:
Используйте флаг -a для проверки существования различных файлов вместо использования вложенных операторов if / else:
если [ -fnew_file.txt-к -fnewfile.txt];тогда
выбросил «Оба файла существуют».
быть
Другой способ:
#! / bin / bashесли [[ -fnew_file.txt&& -fnewfile.txt]];тогда
выбросил «Оба файла существуют».
быть
Выход:
2) Проверка нескольких файлов без использования оператора if:
Используйте следующую инструкцию для одновременной проверки нескольких файлов без использования if:
- [[ -fnew_file.txt&& -fnewfile.txt]] && выбросилОба файла закрываются.
- [[ -fnew_file.txt&& -fnewfile.txt]] && выбросилОба файла закрываются.
Выход:
Заключение:
В этой статье показано, как использовать сценарий bash для проверки файла или каталога. Мы использовали разные варианты, чтобы проверить доступность файла. Во-первых, мы используем команду test с разными флагами. Затем мы узнали, как использовать if, вложенные if-else и без операторов if для проверки файла или каталога. Мы также рассмотрели, как проверить несколько файлов или каталогов.