Как создавать и запускать Bash-скрипты в Linux

Что такое Bash-скрипт
Скрипт — это последовательность команд, выполняющая определённую операцию, которую в противном случае пришлось бы вводить вручную. Когда эти команды понятны и выполняются оболочкой Bash, такой файл называют Bash-скриптом.
Bash — одна из самых популярных оболочек в Linux. Понимание основ Bash позволяет автоматизировать рутинные задачи: установка ПО, создание пользователей, настройка окружения, резервное копирование и многое другое.
Кратко: shebang — строка в начале файла, указывающая интерпретатор. Пример: #!/bin/bash
Минимальные требования для написания скрипта
- Любой текстовый редактор (Vim, Nano, VS Code и т. п.).
- Права на выполнение для файла или запуск через интерпретатор.
- Базовые знания команд оболочки и правил цитирования.
Как создать Bash-скрипт на Linux
Создание нового файла
Создайте пустой файл с расширением .sh. Расширение не обязательно, но удобно для понимания назначения.
touch script.shОткройте файл в редакторе, например:
vim script.shДобавление шебанга и простого содержимого
Добавьте в начало файл строку shebang и несколько команд. Пример простого скрипта, который выводит имя пользователя и приветствие:
#!/bin/bash
# Выводим имя пользователя
echo "$USER"
# Простое сообщение
echo "Hello World"Сохраните файл и закройте редактор.
Важно: shebang указывает, какую программу использовать для выполнения скрипта. Если вы хотите использовать другой интерпретатор, замените путь, например #!/usr/bin/env bash.
Как запустить Bash-скрипт
Запуск из терминала с правами на исполнение
Дайте файл права на выполнение:
sudo chmod +x script.shЗапустите так:
./script.shЕсли вы не хотите менять права, можно передать скрипт интерпретатору напрямую:
bash script.shИли выполнить в текущей оболочке (без нового процесса) командой source:
source script.sh
#. ./script.sh # эквивалентЗапуск через графический интерфейс
Через GUI нужно также разрешить выполнение: правый клик → Свойства → Разрешить выполнение или опция «Исполняемый файл». Затем двойной клик и выбор «Запустить в терминале» или аналогичной опции рабочего окружения.
Полезные приёмы и лучшие практики
Комментарии и структура
- Используйте комментарии для описания назначения скрипта и его ключевых шагов.
- Разбивайте код на функции для повторного использования и читаемости.
Пример функции и проверки кода возврата:
#!/bin/bash
log() { echo "[INFO] $*"; }
install_package() {
sudo apt-get update || return 1
sudo apt-get install -y "$1" || return 1
}
log "Устанавливаем curl"
install_package curl || { echo "Установка не удалась"; exit 1; }Безопасность и обработка ошибок
- Проверяйте коды возврата (exit status) после критичных команд.
- Не выполняйте команды с sudo без необходимости.
- Осторожно обрабатывайте входные данные и имена файлов — избегайте прямой подстановки в eval.
Отладка
- Запускайте с set -x для трассировки команд:
#!/bin/bash
set -euxo pipefail- set -e завершает скрипт при ошибке, set -u предупреждает при необъявленных переменных.
Квоты, кавычки и спецсимволы
- Используйте двойные кавычки вокруг переменных: “$var” — чтобы избежать проблем с пробелами.
- Экранируйте пользовательский ввод, если он используется в команде.
Удобные утилиты для скриптов
- date — форматировать время
- find — искать файлы
- xargs — массовая обработка
- jq — парсинг JSON
Когда Bash не подходит
- Для сложной обработки данных и структур (JSON, XML) лучше использовать Python или специализированные утилиты.
- Для конфигурации множества серверов используйте Ansible, Salt или Puppet.
Альтернативы:
- Python для сложной логики и читаемости.
- Perl/Ruby для текстовой обработки старых кодовых баз.
- Использование systemd timers вместо cron для интеграции с systemd.
Автоматизация и планирование задач
- cron для простых периодических задач. Пример строки crontab:
0 2 * * * /home/user/backup.sh- systemd-timer для более гибких зависимостей и логирования.
Проверка и приёмка скрипта
Критерии приёмки
- Скрипт запускается без ошибок в ожидаемом окружении.
- Скрипт корректно обрабатывает невалидный ввод.
- Ключевые действия логируются.
- Скрипт возвращает 0 при успешном выполнении и ненулевой код при ошибке.
Тестовые сценарии
- Выполнение в чистой среде (новый пользователь).
- Некорректные входные данные и проверка обработки ошибок.
- Проверка idempotency — повторный запуск не ломает систему.
Типичные ошибки и как их решать
- Проблема: “Permission denied” → Решение: проверить права и shebang.
- Проблема: переменные пустые → Решение: set -u и проверка значений по умолчанию.
- Проблема: команды работают в интерактивном терминале, но не в cron → Решение: указывать полный PATH и абсолютные пути.
Ролейные чек-листы
Для начинающего
- Написать скрипт с shebang.
- Добавить комментарии и пример использования.
- Проверить корректность на тестовой машине.
Для разработчика
- Разбить на функции.
- Добавить логирование и обработку ошибок.
- Написать тесты и примеры запусков.
Для системного администратора
- Проверить права, окружение и зависимости.
- Настроить cron или systemd-timer.
- Обеспечить резервирование и мониторинг выполнения.
Методология быстрой разработки скрипта
- Описать цель и входные/выходные данные.
- Составить список внешних зависимостей.
- Разбить задачу на шаги и оформить как функции.
- Добавить логирование и обработку ошибок.
- Протестировать в нескольких сценариях и задокументировать.
Снижение рисков и безопасные практики
- Не храните секреты в открытом виде в скриптах. Используйте Vault или environment variables с ограниченным доступом.
- Запускайте потенциально опасные команды в режиме dry-run.
- Логируйте критичные операции в защищённые журналы.
Короткая шпаргалка команд
- Создать файл: touch script.sh
- Сделать исполняемым: chmod +x script.sh
- Запустить: ./script.sh или bash script.sh
- Отладка: set -x, set -e
Краткий глоссарий
- Bash: командная оболочка и язык скриптов для Unix-систем.
- Shebang: строка #!/path/to/interpreter в начале скрипта.
- chmod: команда для изменения прав доступа к файлу.
- cron: планировщик задач в Unix.
Когда использовать Bash и когда нет
Используйте Bash для автоматизации системных задач, вызова утилит и простых последовательностей команд. Не используйте Bash, если задача требует сложной обработки данных, параллельной обработки с большим количеством потоков или строгой типизации — выберите Python или Go.
Заключение
Bash-скрипты — мощный инструмент для автоматизации задач в Linux. Начните с простых сценариев, придерживайтесь практик безопасности и обработки ошибок, и со временем вы сможете создавать надёжные автоматизированные решения для повседневных задач.
Важно: перед запуском скрипта, скачанного из интернета, внимательно проверьте его содержимое.
Факт-бокс
- Shebang определяет среду выполнения.
- chmod +x делает файл исполняемым.
- set -euxo pipefail помогает отловить ошибки на раннем этапе.
Резюме
- Напишите скрипт с шебангом и правами на исполнение.
- Тестируйте, логируйте и обрабатывайте ошибки.
- Для сложных задач выбирайте более подходящие языки или инструменты.
Похожие материалы
Как удалить аккаунт пользователя на PS4
Сброс сетевых настроек в Windows 10 — быстро и безопасно
Наследование в OOP: понятие, примеры и лучшие практики
Быстрая перекраска шаблона в Canva
Как добавить оглавление в Google Slides