- Как использовать операторы тестирования файлов Bash в Linux
- Использование оператора if -e
- Использование оператора if -s
- Использование оператора if -d
- Использование оператора if -h
- Использование оператора if -r
- Использование оператора if -O
- Заключение
- Проверка существования файла Bash
- Проверка существования файла Bash
- Проверка наличия файла
- Проверка файла на пустоту
- Выводы
Как использовать операторы тестирования файлов Bash в Linux
Операторы проверки файлов используются в Linux для проверки атрибутов файлов, таких как право собственности или символическая ссылка. У каждого оператора Test есть определенная цель. Наиболее важными операторами являются -e и -s. В этой статье вы научитесь тестировать файлы, используя оператор if, за которым следуют некоторые важные операторы тестирования в Linux.
В этой статье мы рассмотрим следующие тестовые операторы:
- Если оператор проверки -e
- Если оператор проверки -s
- Если оператор проверки -d
- Если оператор проверки -h
- Если оператор проверки -r
- Если оператор проверки -O
Использование оператора if -e
Основная цель использования оператора проверки if-e в Centos 8 — проверить, находится ли конкретный файл в каталоге или нет. Поэтому, если вы хотите проверить существование файла с помощью if-e, вам необходимо выполнить следующие шаги:
Создайте два новых файла с именами Test.txt и FileTestOperators.sh соответственно. Расширение .sh принадлежит файлу bash. Вы можете создать оба файла напрямую в домашнем каталоге или с помощью следующей команды:
$ touch FileTestOperators.sh
Если вы хотите аутентифицировать, создан файл или нет, используйте следующую команду:
Вы можете видеть, что оба файла созданы в домашнем каталоге.
Откройте файл FileTestOperators.sh и запишите в него скрипт, как показано на изображении ниже. Мы инициализировали файл переменных и передали ему файл Test.txt в качестве значения. В операторе If у нас есть оператор -e, используемый для подтверждения существования файла Test.txt с использованием файла переменной.
Запустите указанную ниже команду, чтобы проверить существование файла:
Поскольку файл существует в каталоге, вывод будет True.
Использование оператора if -s
Цель использования оператора проверки if-s в Centos 8 — проверить, существует ли указанный файл и является ли он пустым или нет. Поэтому, если вы хотите проверить это с помощью if-e, вам необходимо выполнить следующие шаги:
Мы будем использовать те же файлы с небольшими изменениями в файле FileTestOperators.sh. Вам просто нужно изменить оператор -s вместо -e в операторе if.
Запустите указанную ниже команду, чтобы проверить, является ли файл пустым или нет:
Поскольку файл пуст, вывод, сгенерированный оператором -s, равен False.
Теперь вам нужно добавить текст в файл Test.txt, чтобы изменить результат, как показано на изображении ниже.
Снова запустите указанную ниже команду:
Поскольку на этот раз файл не пустой, вывод, сгенерированный оператором -s, будет True, как показано на изображении.
Вы также можете использовать следующие две команды, чтобы убедиться, что файл пуст:
Использование оператора if -d
Целью использования оператора проверки if-d в Centos 8 является проверка того, является ли конкретный файл каталогом или нет. Поэтому, если вы хотите проверить это с помощью if-d, вы должны выполнить следующие шаги:
Здесь мы снова используем одни и те же оба файла с небольшим изменением в bash-файле FileTestOperators.sh. Мы должны заменить оператор -s оператором -d в операторе if, как показано на изображении ниже.
Итак, запустите указанную ниже команду, чтобы проверить, является ли файл каталогом или нет:
Как мы знаем, файл Test.txt не является каталогом, поэтому оператор -d выводит False Test.txt не является каталогом, как показано на рисунке ниже.
Использование оператора if -h
Оператор проверки if-h используется для проверки того, является ли файл символической (мягкой) ссылкой или нет. Итак, если вы хотите проверить существование файла с помощью if-h, вам необходимо выполнить следующие шаги:
Создайте новый файл с именем SymbolicFile.sh. Вы можете создать его непосредственно в домашнем каталоге или с помощью следующей команды:
Вы можете увидеть файл SymbolicFile.sh в домашнем каталоге, как показано на изображении ниже.
Вы можете вывести список всех каталогов и файлов с помощью команды ls. Вы можете видеть, что файл SymbolicFile.sh также указан в списке, как показано на изображении.
Создайте символическую ссылку, используя простую команду ссылки. В этой команде -s относится к программной ссылке, SymbolicFile.sh — к файлу, ссылка на который будет создана, а NewSymbolicFile.sh — к символической ссылке.
$ ln -s SymbolicFile.sh NewSymbolicFile.sh
Снова перечислите все каталоги и файлы. Вы можете видеть, что программная ссылка была создана.
Итак, мы снова используем bash-файл FileTestOperators.sh с небольшим изменением. Замените оператор -d оператором -h в операторе if. На этот раз мы также должны изменить имя файла. Мы должны использовать файл, который сам является символической ссылкой, например. НовыйСимволическийФайл.sh.
Вы можете увидеть оба файла на изображении ниже.
Теперь запустите следующую команду:
Как мы знаем, файл NewSymbolicFile.sh является символической ссылкой, поэтому оператор -h выводит True NewSymbolicFile.sh, как показано на рисунке ниже.
Использование оператора if -r
Оператор проверки if -r используется для проверки читабельности файла, например. файл читается или нет. Поэтому, если вы хотите проверить это с помощью if-r, вам нужно выполнить следующие шаги:
Опять же, мы используем файлы Test.txt и FileTestOperators.sh с небольшими изменениями. Замените оператор -h оператором -r в операторе if и назначьте файл Test.txt в качестве значения для файла переменной.
Теперь запустите следующую команду:
Поскольку мы знаем, что файл Test.txt доступен для чтения, оператор -r выводит True! Test.txt доступен для чтения.
Примечание. Используйте операторы -w и -x соответственно, чтобы проверить, доступен ли файл для записи и выполнения или нет.
Использование оператора if -O
Оператор проверки if -O используется для проверки того, принадлежит ли файл текущему пользователю или нет. Итак, чтобы проверить это с помощью if-O, вам нужно выполнить следующие шаги:
Опять же, мы используем файлы Test.txt и FileTestOperators.sh с небольшими изменениями. Замените оператор -r оператором -O в операторе if и назначьте файл Test.txt в качестве значения для файла переменной.
Теперь запустите следующую команду:
Поскольку мы знаем, что файл Test.txt уже принадлежит текущему пользователю, оператор -O выводит True Test.txt, принадлежащий текущему пользователю.
Заключение
В этой статье вы узнали о самых важных и различных операторах проверки файлов и их работе в Centos 8. Я надеюсь, что теперь вы можете создавать файлы, проверять их существование, проверять читабельность файлов, проверять права собственности на файлы, и создание мягких ссылок. Пользователи могут чувствовать себя непринужденно после тщательного изучения этой статьи.
Проверка существования файла Bash
В операционных системах GNU/Linux любые объекты системы являются файлами. И проверка существования файла bash — наиболее мощный и широко применяемый инструмент для определения и сравнения в командном интерпретаторе.
В рамках интерпретатора Bash, как и в повседневном понимании людей, все объекты файловой системы являются, тем, чем они есть, каталогами, текстовыми документами и т.д. В этой статье будет рассмотрена проверка наличия файла Bash, а также его проверка на пустоту, и для этого используется команда test.
Проверка существования файла Bash
Начать стоит с простого и более общего метода. Параметр -e позволяет определить, существует ли указанный объект. Не имеет значения, является объект каталогом или файлом.
#!/bin/bash
# проверка существования каталога
if [ -e $HOME ]
then
echo «Каталог $HOME существует. Проверим наличие файла»
# проверка существования файла
if [ -e $HOME/testing ]
then
# если файл существует, добавить в него данные
echo «Строка для существующего файла» >> $HOME/testing
echo «Файл существует. В него дописаны данные.»
else
# иначе — создать файл и сделать в нем новую запись
echo «Файл не существует, поэтому создается.»
echo «Создание нового файла» > $HOME/testing
fi
else
echo «Простите, но у вас нет Домашнего каталога»
fi
Вначале команда test проверяет параметром -e, существует ли Домашний каталог пользователя, название которого хранится системой в переменной $HOME. При отрицательном результате скрипт завершит работу с выводом сообщения об этом. Если такой каталог обнаружен, параметр -е продолжает проверку. На этот раз ищет в $HOME файл testing. И если он есть, то в него дописывается информация, иначе он создастся, и в него запишется новая строка данных.
Проверка наличия файла
Проверка файла Bash на то, является ли данный объект файлом (то есть существует ли файл), выполняется с помощью параметра -f.
#!/bin/bash
if [ -f $HOME ]
then
echo «$HOME — это файл»
else
echo «$HOME — это не файл»
if [ -f $HOME/.bash_history ]
then
echo «А вот .bash_history — файл»
fi
fi
В сценарии проверяется, является ли $HOME файлом. Результат проверки отрицательный, после чего проверяется настоящий файл .bash_history, что уже возвращает истину.
На заметку: на практике предпочтительнее использовать сначала проверку на наличие объекта как такового, а затем — на его конкретный тип. Так можно избежать различных ошибок или неожиданных результатов работы программы.
Проверка файла на пустоту
Чтобы определить, является ли файл пустым, нужно выполнить проверку с помощью параметра -s. Это особенно важно, когда файл намечен на удаление. Здесь нужно быть очень внимательным к результатам, так как успешное выполнение этого параметра указывает на наличие данных.
#!/bin/bash
file=t15test
touch $file
if [ -s $file ]
then
echo «Файл $file содержит данные.»
else
echo «Файл $file пустой.»
fi
echo «Запись данных в $file. »
date > $file
if [ -s $file ]
then
echo «Файл $file содержит данные.»
else
echo «Файл $file все еще пустой.»
fi
Результат работы программы:
В этом скрипте файл создаётся командой touch, и при первой проверке на пустоту возвращается отрицательный результат. Затем в него записываются данные в виде команды date, после чего повторная проверка файла возвращает истину.
Выводы
В статье была рассмотрена проверка существования файла bash, а также его пустоты. Обе функции дополняют друг друга, поэтому использовать их в связке — эффективный приём.
Хороший тон в написании сценариев командного интерпретатора — сначала определить тип файла и его дальнейшую роль в программе, а затем уже проверять объект на существование.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.