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

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

Рубрики:

Bash, Linux

Метки:

, ,

Операционная система Linux предоставляет множество способов проверить существует ли файл в файловой системе. Одним из наиболее популярных методов является использование скриптов Bash.

В этой статье мы покажем Вам три сценария командной строки, с помощью которых можно проверить, существует ли обычный файл в ОС Linux.

Содержание:

  1. Операторы проверки файлов в Linux
  2. Проверка существования обычного файла
    1. Скрипт с одинарными квадратными скобками [ ]
    2. Скрипт с двойными квадратными скобками [[ ]]
    3. Сценарий оболочки с командой test
  3. Выводы

Операторы проверки файлов в Linux

Операторы проверки файлов используются для подтверждения различных атрибутов файлов, таких как право собственности, наличие мягкой ссылки и других. Эти операторы возвращают true (1), если заданное условие выполнено, в противном случае возвращают  false (0) . Зачастую операторы проверки файлов используются в сочетании с условным оператором if.

Вот некоторые распространенные операторы проверки файлов в Linux:

  • -b — истина, если файл существует и является специальным блочным устройством;
  • -c — истина, если файл существует и является символьным устройством;
  • -d — истина, если файл существует и является каталогом;
  • -e — истина, если файл существует;
  • -f — истина, если обычный файл существует;
  • -g — истина, если файл существует и имеет установленный групповой идентификатор (set-group-id);
  • -k — истина, если файл имеет установленный sticky бит.

Проверка существования обычного файла

Теперь перейдем непосредственно к вариантам проверки существования файла в ОС Linux. Мы представим Вам три скрипта Bash, которые позволят узнать о наличии обычного файла. Поэтому в дальнейшем мы будем использовать оператор -f.

Скрипт с одинарными квадратными скобками [ ]

Первый рассматриваемый нами сценарий командной строки имеет следующий вид:

 

cat filecheck 1

Читайте также: 10 полезных советов для написания эффективных bash скриптов в Linux.

В этом скрипте строка:

  • echo -n "Enter the filename: " — указывает пользователю ввести название или путь к файлу;
  • read filename — считывает ввод пользователя и сохраняет его в переменной filename;
  • if [ -f "$filename" ]; then — проверяет, существует ли файл, сохраненный в переменной filename;
  • echo "File exists." — выводит на экран строку File exists., если файл существует;
  • echo "File does not exist." — выводит на экран строку File does not exist., если файл не существует.

Для запуска скрипта Bash выполним команду, синтаксис которой имеет следующий вид:

 

execute filecheck 1

Важно: для корректной проверки существования файла необходимо использовать его название с расширением.

На скриншоте выше видно, что мы запускали скрипт дважды. В первом случае мы использовали просто название файла, во втором — название файла с расширением. Как можно заметить, в первом случае поиск не дал результата.

 

Скрипт с двойными квадратными скобками [[ ]]

Второй скрипт Bash, в отличие от первого, принимает название или путь к файлу в качестве аргумента командной строки. Данный сценарий имеет следующий вид:

 

cat filecheck 2

Читайте также: Изучение базового написания скриптов оболочки (Shell Scripting) и файловой системы Linux, устранение неполадок — LFCS часть 10.

Здесь строка:

  • filename=$1 — присваивает переменной filename значение первого аргумента командной строки;
  • if [ "$filename" != "" ]; then — проверяет, не пуста ли переменная filename;
  • if [[ -f "$filename" ]]; then — проверяет, существует ли файл, указанный в переменной filename;
  • echo "File exists." — выводит на экран сообщение File exists., если файл существует;
  • echo "File does not exist." — выводит сообщение File does not exists., если файл не существует;
  • echo "Argument is missing." — печатает в командной строке сообщение Argument is missing., если пользователь не указал аргумент.

Для запуска скрипта Bash выполним команду, синтаксис которой имеет следующий вид:

 

execute filecheck 2

На скриншоте выше видно, какие мы получили сообщения, когда:

  • не указали аргумент;
  • ввели название без расширения файла;
  • ввели название с расширением.

Сценарий оболочки с командой test

Утилита test нередко используется в скриптах для проверки истинности команд. Она проверяет, является ли команда / выражение истинным true (1) или ложным false (0). Очень часто эту утилиты можно встретить в сценариях для проверки типа файла или его существования.

Третий сценарий, который мы рассмотрим, имеет следующий вид:

 

cat filecheck 3

Читайте также: Как создать и запустить новый (свой собственный) сервис Units в Systemd используя скрипт оболочки Bash Shell Script.

В этом сценарии строка:

  • filename=$1 — присваивает переменной filename значение первого аргумента командной строки;
  • if [ $# -lt 1 ]; then — проверяет, указал ли пользователь какое-либо значение в качестве аргумента;
  • echo "No argument is given." — выводит сообщение No argument is given., если пользователь не указал аргумент;
  • exit 1 — завершает работу с кодом состояния 1 в случае возникновения какой-либо ошибки;
  • if test -f "$filename"; then — проверяет, существует ли файл, указанный в переменной filename;
  • echo "File exists." — выводит в окно терминала сообщение File exists., если файл существует;
  • echo "File does not exist." — выводит в окно терминала сообщение File does not exist., если файл не существует.

Для запуска скрипта Bash выполним команду, синтаксис которой имеет следующий вид:

 

execute filecheck 3

Выводы

Используя показанные в этой статье скрипты Bash, Вы с легкостью сможете определить, существует ли какой-либо файл в операционной системе Linux. Понравился наш материал? Напишите об этом в комментариях!

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасностиполный курс по кибербезопасностикурсы DevNet / DevOps (программируемые системы) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Bash, Linux

Метки:

, ,

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню