Операционная система Linux предоставляет множество способов проверить существует ли файл в файловой системе. Одним из наиболее популярных методов является использование скриптов Bash.
В этой статье мы покажем Вам три сценария командной строки, с помощью которых можно проверить, существует ли обычный файл в ОС Linux.
Содержание:
Операторы проверки файлов в Linux
Операторы проверки файлов используются для подтверждения различных атрибутов файлов, таких как право собственности, наличие мягкой ссылки и других. Эти операторы возвращают true (1)
, если заданное условие выполнено, в противном случае возвращают false (0)
. Зачастую операторы проверки файлов используются в сочетании с условным оператором if
.
Вот некоторые распространенные операторы проверки файлов в Linux:
-b
— истина, если файл существует и является специальным блочным устройством;-c
— истина, если файл существует и является символьным устройством;-d
— истина, если файл существует и является каталогом;-e
— истина, если файл существует;-f
— истина, если обычный файл существует;-g
— истина, если файл существует и имеет установленный групповой идентификатор (set-group-id
);-k
— истина, если файл имеет установленный sticky бит.
Проверка существования обычного файла
Теперь перейдем непосредственно к вариантам проверки существования файла в ОС Linux. Мы представим Вам три скрипта Bash, которые позволят узнать о наличии обычного файла. Поэтому в дальнейшем мы будем использовать оператор -f
.
Скрипт с одинарными квадратными скобками [ ]
Первый рассматриваемый нами сценарий командной строки имеет следующий вид:
Читайте также: 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 выполним команду, синтаксис которой имеет следующий вид:
Важно: для корректной проверки существования файла необходимо использовать его название с расширением.
На скриншоте выше видно, что мы запускали скрипт дважды. В первом случае мы использовали просто название файла, во втором — название файла с расширением. Как можно заметить, в первом случае поиск не дал результата.
Скрипт с двойными квадратными скобками [[ ]]
Второй скрипт Bash, в отличие от первого, принимает название или путь к файлу в качестве аргумента командной строки. Данный сценарий имеет следующий вид:
Читайте также: Изучение базового написания скриптов оболочки (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 выполним команду, синтаксис которой имеет следующий вид:
На скриншоте выше видно, какие мы получили сообщения, когда:
Сценарий оболочки с командой test
Утилита test
нередко используется в скриптах для проверки истинности команд. Она проверяет, является ли команда / выражение истинным true (1)
или ложным false (0)
. Очень часто эту утилиты можно встретить в сценариях для проверки типа файла или его существования.
Третий сценарий, который мы рассмотрим, имеет следующий вид:
Читайте также: Как создать и запустить новый (свой собственный) сервис 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 выполним команду, синтаксис которой имеет следующий вид:
Выводы
Используя показанные в этой статье скрипты Bash, Вы с легкостью сможете определить, существует ли какой-либо файл в операционной системе Linux. Понравился наш материал? Напишите об этом в комментариях!
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.