В мире 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
Как сделать скрипт повседневным инструментом?
- Дайте права на выполнение:
chmod +x script.sh - Поместите в PATH: Скопируйте в
/usr/local/bin/или добавьте свою директорию в переменную PATH. - Настройте планировщик: Используйте 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\".