shopt: малоизвестные настройки Bash, которые меняют поведение shellБольшинство пользователей знают про
set -e или set -u, но в Bash есть ещё один мощный инструмент настройки - shopt.С его помощью можно включать и отключать десятки дополнительных возможностей оболочки.
▪️Посмотреть доступные опции
shopt
Или только включённые:shopt -s
▪️globstar - рекурсивный поиск без findПо умолчанию:
ls **/*.log
не сработает.Включаем:
shopt -s globstar
Теперь:ls **/*.log
найдёт все .log-файлы во вложенных каталогах.▪️
nullglob - если файлов нетБез этой опции:
for file in *.log; do
echo "$file"
done
выведет:*.log
Вместо пустого списка.Исправляем:
shopt -s nullglob
Теперь цикл просто не выполнится.▪️
dotglob - учитывать скрытые файлыПо умолчанию
* не включает файлы, начинающиеся с точки.После:
shopt -s dotglob
они тоже попадут в результат.▪️
failglob - защита от опечатокЕсли шаблон не совпал ни с одним файлом:
rm *.bak
с failglob Bash сразу сообщит об ошибке вместо передачи шаблона команде.shopt -s failglob
Это помогает избежать неожиданных сценариев в автоматизации.▪️Почему это важно
Несколько опций
shopt способны заметно изменить поведение Bash без переписывания скриптов. Особенно полезны globstar, nullglob и failglob - они делают работу с шаблонами более удобной и предсказуемой.BashTex 📱 #bash #linux