Гид по технологиям

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

5 min read Linux Обновлено 29 Dec 2025
Bash-скрипты в Linux: создание и запуск
Bash-скрипты в Linux: создание и запуск

Программист пишет Bash-скрипты

Что такое 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  # эквивалент

Запуск через графический интерфейс

Запуск Bash-скрипта из терминала

Через 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.
  • Обеспечить резервирование и мониторинг выполнения.

Методология быстрой разработки скрипта

  1. Описать цель и входные/выходные данные.
  2. Составить список внешних зависимостей.
  3. Разбить задачу на шаги и оформить как функции.
  4. Добавить логирование и обработку ошибок.
  5. Протестировать в нескольких сценариях и задокументировать.

Снижение рисков и безопасные практики

  • Не храните секреты в открытом виде в скриптах. Используйте 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 помогает отловить ошибки на раннем этапе.

Резюме

  • Напишите скрипт с шебангом и правами на исполнение.
  • Тестируйте, логируйте и обрабатывайте ошибки.
  • Для сложных задач выбирайте более подходящие языки или инструменты.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как удалить аккаунт пользователя на PS4
Гайды

Как удалить аккаунт пользователя на PS4

Сброс сетевых настроек в Windows 10 — быстро и безопасно
Windows

Сброс сетевых настроек в Windows 10 — быстро и безопасно

Наследование в OOP: понятие, примеры и лучшие практики
Программирование

Наследование в OOP: понятие, примеры и лучшие практики

Быстрая перекраска шаблона в Canva
Дизайн

Быстрая перекраска шаблона в Canva

Как добавить оглавление в Google Slides
Руководство

Как добавить оглавление в Google Slides

Как найти AirPods через Find My
Гайд

Как найти AirPods через Find My