Information Security Squad
stay tune stay secure
⛱ Проверьте, существует ли каталог в оболочке Linux или Unix
Нужно проверить, существует ли каталог в скрипте оболочки, работающем в Linux или Unix-подобной системе?
Как проверить, существует ли каталог в скрипте оболочки?
Каталог — это не что иное, как место для хранения файлов в системе Linux в иерархическом формате.
Например, $HOME/Downloads/ будет хранить все загруженные файлы или /tmp/ будет хранить временные файлы.
В этой статье показано, как узнать, существует ли каталог в Linux или Unix-подобных системах.
Как проверить, существует ли каталог в Linux
Можно проверить, существует ли каталог в скрипте оболочки Linux, используя следующий синтаксис:
- [ -d «/path/dir/» ] && echo «Directory /path/dir/ exists.»
Вы можете использовать ! чтобы проверить, существует ли каталог в Unix:
- [ ! -d «/dir1/» ] && echo «Directory /dir1/ DOES NOT exists.»
Можно проверить, существует ли каталог в скрипте Linux следующим образом:
Linux проверяет, существует ли каталог, и предпринимает какие-то действия
Вот пример скрипта оболочки, чтобы увидеть, существует ли папка в Linux:
Запустите его следующим образом:
./test.sh
./test.sh /tmp/
./test.sh /itsecforu
Проверьте, существует ли каталог в bash, и если нет, то создайте его.
Вот пример скрипта оболочки, чтобы проверить, не существует ли каталог, и создать его в соответствии с нашими потребностями:
Убедитесь, что вы всегда заключаете переменные оболочки, такие как $DIR, в двойные кавычки («$DIR», чтобы избежать неожиданностей в ваших скриптах:
Использование команды test
Команду test можно использовать для проверки типов файлов и сравнения значений.
Например, посмотрите, существует ли FILE и является ли он каталогом. Синтаксис:
Команда test аналогична [условному выражению. Следовательно, вы также можете использовать следующий синтаксис:
[ -d «DIR» ] && echo «yes» || echo «noop»Помощь
Заключение
В этой статье описаны различные команды, которые можно использовать для проверки существования каталога в скриптов оболочки, работающем в Linux или Unix-подобных системах.
Добавить комментарий Отменить ответ
Онлайн курсы
Рубрики
- Аудит ИБ (36)
- Вакансии (9)
- Закрытие уязвимостей (97)
- Книги (25)
- Мануал (1 722)
- Медиа (65)
- Мероприятия (33)
- Мошенники (21)
- Обзоры (641)
- Обход запретов (30)
- Опросы (3)
- Скрипты (96)
- Статьи (255)
- Философия (27)
- Юмор (14)
Метки
Наш Telegram
Социальные сети
Hack shop
Поделиться
Anything in here will be replaced on browsers that support the canvas element
bash проверки существования файла, директории, пользователя
Проверка существования файла:
Проверка существования директории:
Проверка существования пользователя:
4 комментария . Оставить новый
Проверка существования пользователя не точная:
если существует пользователь, например, test2
А grep ищем несуществующего пользователя test, то его найдет.
Эм, а на практике проверял код?
Только что создал тестовый файлик с кодом
grep “test2” /etc/passwd >/dev/null
if [ $? -ne 0 ]; then
echo ‘No username found’
fi
проверяем:
[email protected]:
$ sh usr.sh
No username found
grep -x #полное совпадение
Вот так будет самый точный поиск пользователя:
grep “^test1:” /etc/passwd
grep “test1:” /etc/passwd
test1:x:999:1003:Hi the test1:/home/test1:/bin/bash
test-test1:x:997:1003:Hi the test-test1:/home/test1:/bin/false
test1www:x:996:1003:Hi the test1www:/home/test1:/bin/false
[email protected]:
# grep “^test1:” /etc/passwd
test1:x:999:1003:Hi the test1:/home/test1:/bin/bash
Как проверить, существует ли файл или каталог в Bash
Главное меню » Операционная система Linux » Как проверить, существует ли файл или каталог в Bash
В Bash вы можете использовать команду test, чтобы проверить, существует ли файл и определить тип файла.
Команда test принимает одну из следующих синтаксических форм:
Если вы хотите, чтобы ваш скрипт был переносимым, вы должны предпочесть использовать старую тестовую команду [, которая доступна во всех оболочках POSIX. Новая обновленная версия команды test [[(двойные скобки) поддерживается в большинстве современных систем, использующих Bash, Zsh и Ksh в качестве оболочки по умолчанию.
Проверьте, существует ли файл
При проверке, существует ли файл, чаще всего используются операторы FILE -e и -f. Первый проверит, существует ли файл независимо от типа, а второй вернет истину, только если ФАЙЛ является обычным файлом (не каталогом или устройством).
Наиболее читаемым вариантом при проверке файла является использование команды test в сочетании с оператором if. Любой из приведенных ниже фрагментов проверит, /etc/resolv.conf существует ли файл:
Если вы хотите выполнить другое действие в зависимости от того, существует файл или нет, просто используйте конструкцию if/then:
Всегда используйте двойные кавычки, чтобы избежать проблем при работе с файлами, содержащими пробелы в своих именах.
Вы также можете использовать команду test без оператора if. Команда после оператора && будет выполнена только в том случае, если статус выхода команды test равен true,
Если вы хотите выполнить серию команд после оператора &&, просто заключите команды в фигурные скобки, разделенные ; или &&:
Напротив оператор &&, после оператора || будет выполняться только в том случае, если статус выхода команды test равен false.
Проверьте, существует ли каталог
Оператор -d позволяют проверить, является ли файл каталогом или нет.
Например, чтобы проверить, /etc/docker существует ли каталог, вы должны использовать:
Вы также можете использовать двойные скобки [[ вместо одной [.
Проверьте, не существует ли файл
Как и во многих других языках, тестовое выражение можно отменить, используя логический оператор ! (восклицательный знак):
Проверьте, существует ли несколько файлов
Вместо использования сложных вложенных конструкций if/else вы можете использовать -a (или && с [[), чтобы проверить, существует ли несколько файлов:
Эквивалентные варианты без использования оператора IF:
Операторы проверки файлов
Команда test включает в себя следующие операторы FILE, которые позволяют тестировать определенные типы файлов:
- -b FILE – Истина, если ФАЙЛ существует и является специальным файлом блока.
- -c FILE – Истина, если ФАЙЛ существует и является файлом специальных символов.
- -d FILE – Истина, если ФАЙЛ существует и является каталогом.
- -e FILE – Истинно, если ФАЙЛ существует и является файлом, независимо от его типа (узел, каталог, сокет и т. Д.).
- -f FILE – Истина, если ФАЙЛ существует и является обычным файлом (не каталогом или устройством).
- -G FILE – Истина, если ФАЙЛ существует и имеет ту же группу, что и пользователь, выполняющий команду.
- -h FILE – Истина, если ФАЙЛ существует и является символической ссылкой.
- -g FILE – Истина, если ФАЙЛ существует и установлен флаг set-group-id (sgid).
- -k FILE – Истина, если ФАЙЛ существует и установлен флаг закрепления битов.
- -L FILE – Истина, если ФАЙЛ существует и является символической ссылкой.
- -O FILE – Истина, если ФАЙЛ существует и принадлежит пользователю, выполняющему команду.
- -p FILE – Истина, если ФАЙЛ существует и является каналом.
- -r FILE – Истина, если ФАЙЛ существует и доступен для чтения.
- -S FILE – Истина, если ФАЙЛ существует и является сокетом.
- -s FILE – Истина, если ФАЙЛ существует и имеет ненулевой размер.
- -u FILE – Истина, если установлен флаг set-user-id (suid).
- -w FILE – Истина, если ФАЙЛ существует и доступен для записи.
- -x FILE – Истина, если ФАЙЛ существует и является исполняемым.
Заключение
В этой статье мы показали, как проверить, существует ли файл или каталог с помощью Bash.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.