getopts function | Working with Flags / Options - Tech Arkit
Оглавление:
- Проверьте, существует ли файл
- Проверьте, существует ли каталог
- Проверьте, не существует ли файл
- Проверьте, существует ли несколько файлов
- Операторы проверки файлов
- Вывод
Во многих случаях при написании сценариев Shell вы можете оказаться в ситуации, когда вам нужно выполнить действие, основанное на том, существует файл или нет.
В Bash вы можете использовать команду test, чтобы проверить, существует ли файл и определить тип файла.
Команда test принимает одну из следующих синтаксических форм:
Проверьте, существует ли файл
При проверке существования файла чаще всего используются операторы FILE
-e
и
-f
. Первый проверит, существует ли файл независимо от типа, а второй вернет истину, только если ФАЙЛ является обычным файлом (не каталогом или устройством).
Наиболее читаемым вариантом при проверке существования файла является использование команды test в сочетании с оператором if. Любой из приведенных ниже фрагментов будет проверять, существует ли файл
/etc/resolv.conf
:
FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi
Если вы хотите выполнить другое действие в зависимости от того, существует файл или нет, просто используйте конструкцию if / then:
FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi
Всегда используйте двойные кавычки, чтобы избежать проблем при работе с файлами, содержащими пробелы в своих именах.
Вы также можете использовать команду test без оператора if. Команда после оператора
&&
будет выполняться только в том случае, если статус завершения тестовой команды равен true,
test -f /etc/resolv.conf && echo "$FILE exist"
&& echo "$FILE exist"
] && echo "$FILE exist"
&& { echo "$FILE exist"; cp "$FILE" /tmp/; }
Напротив
&&
, заявление после
||
Оператор будет выполняться только в том случае, если статус выхода тестовой команды равен
false
.
&& echo "$FILE exist" || echo "$FILE does not exist"
Проверьте, существует ли каталог
Операторы
-d
позволяют вам проверить, является ли файл каталогом или нет.
Например, чтобы проверить, существует ли каталог
/etc/docker
вы должны использовать:
FILE=/etc/docker if; then echo "$FILE is a directory" fi
&& echo "$FILE is a directory"
Вы также можете использовать двойные скобки
, 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));
Проверьте, не существует ли файл
Как и во многих других языках, тестовое выражение можно отменить, используя
!
(восклицательный знак) логический не оператор:
FILE=/etc/docker if; then echo "$FILE does not exist" fi
То же, что и выше:
&& echo "$FILE does not exist"
Проверьте, существует ли несколько файлов
Вместо использования сложных вложенных конструкций if / else вы можете использовать
-a
(или
&&
с
; then echo "$FILE is a directory" fi
FILE=/etc/docker if; then echo "$FILE is a directory" fi
Эквивалентные варианты без использования оператора IF:
&& echo "both files exist"
Операторы проверки файлов
Команда test включает в себя следующие операторы FILE, которые позволяют тестировать определенные типы файлов:
-
-b
FILE
- Истинно, если ФАЙЛ существует и является специальным файлом блока.-c
FILE
- Истина, если ФАЙЛ существует и является файлом специальных символов.-d
FILE
- Истинно, если ФАЙЛ существует и является каталогом.-e
FILE
- Истинно, если ФАЙЛ существует и является файлом, независимо от его типа (узел, каталог, сокет и т. д.).-f
FILE
- Истинно, если ФАЙЛ существует и является обычным файлом (не каталогом или устройством).-G
FILE
- True, если ФАЙЛ существует и имеет ту же группу, что и пользователь, выполняющий команду.-h
FILE
- True, если ФАЙЛ существует и является символической ссылкой.-g
FILE
- True, если FILE существует и для него установлен флаг set-group-id (sgid).-k
FILE
- Истина, если ФАЙЛ существует и для него установлен флаг закрепления битов.-L
FILE
- True, если ФАЙЛ существует и является символической ссылкой.-O
FILE
- True, если ФАЙЛ существует и принадлежит пользователю, выполняющему команду.-p
FILE
- True, если ФАЙЛ существует и является каналом.-r
FILE
- Истинно, если ФАЙЛ существует и доступен для чтения.-S
FILE
- True, если ФАЙЛ существует и является сокетом.-s
FILE
- True, если ФАЙЛ существует и имеет ненулевой размер.-u
FILE
- Истина, если установлен флаг set-user-id (suid).-w
FILE
- Истинно, если ФАЙЛ существует и доступен для записи.-x
FILE
- True, если ФАЙЛ существует и является исполняемым.
Вывод
В этом руководстве мы показали, как проверить, существует ли файл или каталог с помощью Bash.
терминал bashКак узнать или проверить, перенаправляет ли ссылка или URL-адрес на
Эти бесплатные онлайн-инструменты помогут вам найти URL, перенаправление которого вы хотите проверить, идет ли он к нужному месту назначения или нет. Найдите, где данный URL-адрес или ссылка перенаправляются.
Как проверить (проверить) открытые порты в Linux
В этой статье описывается несколько подходов, чтобы узнать, какие порты открыты снаружи в вашей системе Linux.
Как проверить, существует ли файл или каталог в Python
При написании скриптов Python вы можете захотеть выполнить определенное действие, только если файл или каталог существует или нет. Например, вы можете захотеть прочитать или записать данные в файл конфигурации или создать файл, только если он уже не существует.