Продвинутый Bash: автоматизация рутинных задач
Скрипты оболочки связывают утилиты, API и файлы. Урок про strict mode, конвейеры, циклы, `find` + `xargs`, cron и когда пора перейти на Python или Ansible.
Структура урока: code-explorer — обязательный префикс скрипта. Pipeline — классическая цепочка обработки текста. Вкладки — безопасный обход файлов и cron. Карточки — Bash vs другой язык.
Без `set -euo pipefail` ошибка в середине конвейера или теста `[[` может остаться незамеченной. pipefail обязателен: иначе успех определяется только последней командой в `|`.
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
# ... команды ...
Конвейер соединяет stdout одной программы с stdin следующей. Философия Unix: маленькие инструменты, композиция. `| tee log.txt` — и в файл, и дальше по pipe.
Виджет pipeline: слева направо — поток байт. grep отбирает строки, awk режет поля, sort | uniq считает частоты. В конце перенаправление — не забывайте `2>&1` для логов.
find /var/log -type f -name '*.log' -print0 | \
xargs -0 -I{} ls -lh {}find . -type f -name '*.txt' -print0 | \
xargs -0 -P 4 gzipBash хорош как клей вокруг уже существующих CLI. Вложенный JSON и сложная логика — зона `jq`, Python или специализированных инструментов.