Магия Bash: Практические скрипты для автоматизации рутины

Магия Bash: Практические скрипты для автоматизации рутины

В мире Linux и macOS есть мощный, но часто недооценённый инструмент — Bash. За сухим термином \"скрипт\" скрывается настоящая магия автоматизации: от простого резервного копирования до сложных системных мониторингов. Эта статья — ваш практический гид по превращению рутины в элегантный код.

Почему Bash? Сила в простоте

Bash (Bourne Again SHell) — это не просто командная строка, а полноценный язык программирования. Его главные козыри — доступность (есть практически в любой *nix-системе), прямое взаимодействие с системой и консольными утилитами, а также лаконичность для решения повседневных задач.

Каждый Bash-скрипт начинается с шебанга (shebang) — первой строки #!/bin/bash. Это указание системе на интерпретатор.

От теории к практике: 5 рабочих примеров

Давайте рассмотрим реальные скрипты, которые можно адаптировать под свои нужды.

1. Автоматическое резервное копирование

Скрипт создаёт timestamp-архив указанной директории.

#!/bin/bash
# backup.sh
BACKUP_DIR=\"/home/user/documents\"
DEST_DIR=\"/mnt/backup\"
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf \"$DEST_DIR/backup_$DATE.tar.gz\" \"$BACKUP_DIR\"
echo \"Резервная копия $BACKUP_DIR создана в $DEST_DIR/backup_$DATE.tar.gz\"

2. Мониторинг дискового пространства

Скрипт проверяет заполненность раздела и шлёт предупреждение.

#!/bin/bash
# disk_alert.sh
THRESHOLD=90
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $USAGE -gt $THRESHOLD ]; then
  echo \"Внимание! Диск заполнен на $USAGE%\" | mail -s \"Disk Alert\" admin@example.com
fi

3. Пакетное переименование файлов

Классическая задача, решаемая в одну строку.

#!/bin/bash
# rename_photos.sh
for file in *.jpg; do
  mv \"$file\" \"vacation_$file\"
done

4. Проверка доступности сайта

Простой мониторинг uptime веб-сервиса.

#!/bin/bash
# site_check.sh
URL=\"https://example.com\"
if curl --output /dev/null --silent --head --fail \"$URL\"; then
  echo \"$URL доступен\"
else
  echo \"$URL НЕ ДОСТУПЕН!\"
fi

5. Умный очиститель временных файлов

Безопасная очистка с логированием.

#!/bin/bash
# cleaner.sh
LOG_FILE=\"/var/log/cleaner.log\"
TMP_DIR=\"/tmp\"
echo \"$(date): Начало очистки $TMP_DIR\" >> $LOG_FILE
find \"$TMP_DIR\" -type f -name \"*.tmp\" -mtime +7 -delete
find \"$TMP_DIR\" -type f -name \"*~\" -delete
echo \"$(date): Очистка завершена\" >> $LOG_FILE

Как сделать скрипт повседневным инструментом?

  1. Дайте права на выполнение: chmod +x script.sh
  2. Поместите в PATH: Скопируйте в /usr/local/bin/ или добавьте свою директорию в переменную PATH.
  3. Настройте планировщик: Используйте cron для регулярного запуска. crontab -e откроет редактор.

Всегда тестируйте скрипты, особенно те, что работают с удалением файлов или системными настройками, в безопасном окружении или на тестовых данных.

FAQ: Часто задаваемые вопросы

С чего начать изучение Bash?

Начните с базового синтаксиса: переменные, условия (if), циклы (for, while). Затем освойте работу с ключевыми утилитами (grep, awk, sed, find). Практикуйтесь, автоматизируя哪怕 самую мелкую свою задачу.

Чем Bash лучше Python для автоматизации?

Bash идеален для задач, тесно связанных с вызовом консольных команд, работой с файловой системой и pipes (|). Он запускается быстрее для простых сценариев. Python сильнее в сложной логике, работе с данными и кроссплатформенности.

Как debug-ить Bash-скрипт?

Запустите скрипт с ключом -x: bash -x script.sh. Это покажет подробный пошаговый вывод каждой выполняемой команды. Также полезно использовать set -e в начале скрипта для остановки при первой ошибке.

Можно ли писать скрипты под Windows?

Нативно — нет. Но вы можете использовать WSL (Windows Subsystem for Linux), Git Bash (входит в состав Git for Windows) или Cygwin для создания подобной среды.

Где найти больше примеров и идей?

Изучайте скрипты в /usr/bin и /usr/local/bin на вашей системе. Отличные ресурсы — сайт like The Linux Documentation Project (TLDP) и репозитории на GitHub с тегом \"bash\".