yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Как запускать и писать Bash-скрипты в Linux: пошаговая инструкция

В процессе работы на компьютере пользователи перемещают файлы, запускают программы, копируют документы и совершают другие рутинные действия. Их выполнение можно автоматизировать, если написать «сценарии» для операционной системы. Пример таких сценариев в Linux — Bash-скрипты. Давайте разбираться, что это такое, как их писать и запускать. 

Инструкции
Иллюстрация для статьи на тему «Как запускать и писать Bash-скрипты в Linux: пошаговая инструкция»
Продукты из этой статьи:
Иконка-Evolution Compute
Evolution Compute

Что такое Bash

Bash (Bourne Again SHell) — это современная командная оболочка для Linux и других Unix-подобных систем, которая служит одновременно и интерактивным интерпретатором команд, и языком сценариев.

  • Как оболочка, Bash позволяет пользователю напрямую взаимодействовать с системой, выполняя команды для навигации по файловой системе, управления процессами и настройки окружения.

  • Как на языке сценариев, на Bash пишут скрипты для автоматизации повторяющихся действий. Эти программы поддерживают переменные, условия, циклы и функции, что дает возможность гибко работать с файлами, данными и другими программами.

Благодаря этому двойному назначению, Bash является фундаментальным инструментом для эффективной работы в командной строке и создания решений для автоматизации. Например, его можно использовать для управления задачами виртуальных машин Evolution Compute

Какие рутинные процессы можно автоматизировать с помощью Bash-скриптов: 

  • переименование файлов в папках и каталогах; 

  • перенос файлов в другие папки;

  • резервное копирование документов; 

  • запуск сервисов и программ при включении компьютера; 

  • скачивание и распаковка архивов.

Список можно продолжать, поскольку каждый пользователь сам решает, что ему удобно автоматизировать. Дело за малым — научиться правильно писать Bash-скрипты. Для этого не обязательно быть профессиональным программистом — достаточно освоить основные алгоритмы и принцип создания сценариев. 

Развертывание Bash-среды

В большинстве дистрибутивов Bash уже установлен по умолчанию. Чтобы проверить это, введите в терминале: bash --version

Если Bash установлен, вы увидите информацию о версии, например: GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu). Также можно проверить путь к исполняемому файлу с помощью команды which bash. Обычно Bash располагается по пути /bin/bash или /usr/bin/bash.

Если Bash не установлен, необходимо действовать самостоятельно. Предлагаем алгоритмы для разных дистрибутивов Linux:

  • CentOS/RHEL/Fedora/AlmaLinux/Rocky Linux: 

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим
  • Arch Linux и производные: 

  • Debian/Ubuntu и производные: 

Бывает, что Bash установлен, но по умолчанию используется другая оболочка. С помощью команды cat/etc/shells можно проверить, какие оболочки доступны. Чтобы по умолчанию использовать Bash, введите:

Затем перезагрузите компьютер, чтобы изменения отобразились. 

Evolution Compute
Evolution Compute
Выбирайте готовые конфигурации вычислительных мощностей и адаптируйте их под свои задачи: подключайте дополнительные диски, подсети и IP-адреса.
Подробнее

Выбор редактора для написания скриптов

Для написания скриптов можно использовать любой встроенный в операционную систему текстовый редактор либо специально настроенную среду. Второй вариант удобнее, поскольку там уже все «заточено» под написание. Предлагаем три популярных редактора. 

Vim 

Этот классический консольный редактор — в списке лидеров у специалистов, которые пишут Bash-скрипты. Главным образом потому, что тут можно кастомизировать функциональность под себя для большего удобства. Если использовать плагины, получится сделать из классического редактора полноценную консольную IDE. 

Какие еще есть плюсы у Vim:

  • высокая скорость работы в терминале;

  • возможности модального редактирования; 

  • наличие подсветки синтаксиса и автодополнения кода;

  • удобное управление с клавиатуры.

Подводные камни тоже есть, особенно для новичков. Редактор нужно правильно настроить, что не всегда просто, если нет опыта. Кроме того, нужно учить специальные команды и разбираться в интерфейсе. Поэтому Vim — это все же вариант для профессиональных программистов. 

Интерфейс VimИнтерфейс Vim

Nano 

Как и Vim, это консольный редактор. В нем проще разобраться новичкам, поскольку сложные настройки не нужны. Здесь уже есть базовый набор программ, доступный из «коробки». 

Преимущества редактора: 

  • простой, интуитивно понятный интерфейс, в котором разберутся даже новички; 

  • подсветка синтаксиса для популярных языков программирования;

  • непосредственное (немодальное) редактирование;

  • возможность гибкой настройки цветовых схем. 

Минусы такие:

  • не поддерживаются плагины, поэтому функциональность редактора расширить не получится; 

  • не предусмотрено автоматическое завершение кода; 

  • ограниченные возможности кастомизации. 

Для написания Bash-скриптов Nano подойдет, но для серьезного программирования он не предназначен. 

Интерфейс NanoИнтерфейс Nano

Visual Studio Code

Это универсальный редактор кода, который легко превращается в удобную среду разработки. Поддерживает практически все распространенные языки программирования, плагины для расширения функциональности. Например, для работы с Bash можно установить Bash IDE. 

Сильные стороны редактора: 

  • удобный современный пользовательский интерфейс; 

  • возможность автоматического завершения кода; 

  • подсветка синтаксиса;

  • помощник на основе искусственного интеллекта; 

  • инструменты для поиска ошибок в коде и редактирования. 

Минусы Visual Studio Code:

  • высокая нагрузка на процессор;

  • медленная работа на старых устройствах; 

  • ограниченная базовая функциональность; 

  • необходимость в ручной настройке некоторых инструментов. 

Visual Studio Code подойдет как для новичков, так и для опытных программистов. Интерфейс редактора можно настроить под себя, чтобы в процессе работы не тратить время на поиск нужных инструментов. 

Интерфейс Visual Studio CodeИнтерфейс Visual Studio Code

Синтаксис Bash-скриптов

Минимальная структура Bash-скрипта выглядит так: 

Пояснение:

  • #!/bin/bash — шебанг (shebang) указывает системе, какой интерпретатор использовать для выполнения скрипта.

  • # Комментарий — строка комментария, игнорируется интерпретатором.

  • команда1, команда2 — обычные команды, такие же, как в терминале.

Простая программа: "Hello, World!"

Базовый пример скрипта в любом языке программирования — вывод сообщения "Hello, World!" на экран. В Bash это выглядит так:

Разберем программу: 

  1. #!/bin/bash — шебанг-строка, указывающая системе, что скрипт должен выполняться с использованием интерпретатора Bash.

  2. # Этот скрипт выводит "Hello, World!" на экран — комментарий в скрипте. Комментарии начинаются с символа # и игнорируются интерпретатором. Они поясняют, что делает конкретная часть кода.

  3. echo — встроенная команда в Bash, которая выводит текст на экран. В данном случае она выводит строку "Hello, World!" в терминал.

Внешние и двойные кавычки используются для обозначения строкового значения, которое передается в команду echo. В этом случае на экране появится сообщение: «Hello, World!».

Работа с переменными и параметрами

Работа с переменными и параметрами в Bash нужна для динамичного управления данными в скриптах и создания гибких решений. Рассказываем основные тонкости. 

Создание и использование переменных

Переменные в Bash —  это именованные места для хранения данных (строк, массивов текста, чисел), которые используются в процессе выполнения скрипта. Если говорить простым языком, то переменные — способ хранить информацию, чтобы было удобно вновь к ней обращаться. Для доступа к сохраненным значениям нужно использовать префикс $

Пример переменных: name="Alice", age=25. Как обращаться к переменным: 

Пример объявления и использования переменной:

Параметры командной строки

Использование параметров командной строки — распространенный способ передачи данных Bash-скриптам. Вызвав сценарий с параметрами, можно передать данные, с которыми он будет работать. Параметры дают возможность создавать более универсальные и адаптивные скрипты, которые могут работать с различными входами, заданными в командной строке.

Параметры могут быть получены с помощью специальных переменных, таких, как $1, $2 и далее (до $9), где число указывает на позицию параметра. Имя скрипта — $0. Количество переданных параметров — $#. Вывод параметров списком — $@. Вывод параметров единой строкой — $*

Разберем пример. Вот вводные: 

Скрипт будет выглядеть так: ./script.sh Hello World. И такой результат мы получим: 

  • Имя скрипта: ./script.sh

  • Первый параметр: Hello

  • Второй параметр: World

  • Количество переданных параметров: 2

  • Все параметры: Hello World. 

Если вы хотите, чтобы скрипт проверял количество переданных параметров и выполнял действие в зависимости от этого, можно использовать следующий код:

Управляющие структуры

Управляющие структуры в Bash — это элементы синтаксиса, которые позволяют контролировать ход выполнения скрипта в зависимости от определенных условий или повторяющихся действий. Например, к управляющим структурам относятся условные выражения и циклы. 

Условные выражения

Фундамент в любой структуре принятия решений — условие if. Общий синтаксис выглядит так:

В конце обязательно должно быть fi — обратное написание if. 

Разберем пример скрипта root.sh, в котором заложено утверждение «вы пользователь root». Сценарий повторяет утверждение, если вы действительно запускаетесь от имени пользователя root. 

Скрипт root.shСкрипт root.sh

Команда whoami выведет имя пользователя. Если это ваше имя и вы входите как пользователь root, условие $(whoami) = ‘root’ будет истинным. 

Еще в Bash есть оператор if-else. В него можно включить код, который будет запускаться, если условие if оценивается как ложное. На скрине пример, как это выглядит. 

Результат выполнения скрипта root.shРезультат выполнения скрипта root.sh

Если вы запустите скрипт не от имени пользователя root, выйдет сообщение такого типа, как на скрине. 

Конструкция case

Операторы case иногда заменяют if, поскольку их легче читать. Как выглядит синтаксис case: 

Операторы case удобны для работы с регулярными выражениями или при сопоставлении образцов. Пример сценария:

Применение caseПрименение case

Один символ принимается в качестве аргумента. В данном случае  — *. Сценарий показывает, чем является этот символ — маленькой/большой буквой алфавита, числом или специальным символом. 

Результат применения caseРезультат применения case

Циклы

Циклы в Bash — инструменты для автоматизации повторяющихся задач. В зависимости от ситуации можно использовать разные типы циклов — for для фиксированного числа повторений и while — для выполнения команд, пока истинно определенное условие. 

Цикл for используется для многократного выполнения набора команд. Он удобен, если вы знаете количество повторений. 

С помощью цикла for можно автоматизировать задачи, например, создание резервных копий нескольких файлов:

Результат выполнения:

  • Создание резервной копии для: file1.txt

  • Создание резервной копии для: file2.txt

  • Создание резервной копии для: file3.txt

Цикл while выполняет команду или группу команд, пока выполняется заданное условие. Это полезно в случаях, когда количество повторений заранее неизвестно, и нужно продолжать выполнять команды до тех пор, пока что-то не изменится.

Цикл while можно использовать для выполнения повторяющейся задачи, например, проверки использования процессора, пока его нагрузка не уменьшится ниже заданного порога

Пример использования цикла while:

Результат:

  • Текущая нагрузка на процессор: 75.5%

  • Текущая нагрузка на процессор: 72.3%

Нагрузка на процессор ниже порога. Завершаем.

Цикл будет продолжаться, пока нагрузка на процессор не упадет до заданного порога. 

Функции и их использование

Функции в Bash — блоки кода, которые можно многократно использовать. Если повторно нужен какой-то блок, достаточно сослаться на него в скрипте. 

Объявление функцииОбъявление функции

Пример функции: 

Функция greet выводит приветствие с именем, которое передается как аргумент.При вызове greet "Alice" скрипт выведет Hello, Alice!.

Передача параметров в функцию

Функции могут принимать параметры (аргументы), которые передаются функции при ее вызове. Параметры обозначаются как $1, $2, ..., $n в теле функции (первый параметр — $1, второй — $2 и так далее).

Пример:

Функция sum принимает два параметра, складывает их и выводит результат.

Возврат значения из функции

Чтобы вернуть значение из функции, можно использовать команду echo, а затем присвоить результат переменной при вызове функции.

Пример:

Функция multiply возвращает результат умножения двух чисел, который сохраняется в переменной result.

Локальные переменные

Чтобы использовать локальные переменные внутри функции и избежать конфликтов с глобальными переменными, можно использовать ключевое слово local.

Пример:

Переменная sum объявляется как локальная, поэтому ее значение доступно только внутри функции.

Рекурсия в Bash

Функции в Bash могут вызывать сами себя. Эта способность называется рекурсией. Она позволяет решать сложные задачи, разбивая их на подзадачи. 

Пример:

Функция factorial вычисляет факториал числа с использованием рекурсии.

Запуск Bash-скриптов

Перед тем, как запустить Bash-скрипт, необходимо установить права доступа, чтобы система могла его выполнить. Для этого используется команда chmod:

Команда дает права на выполнение скрипта, то есть файл script.sh становится исполняемым. 

Как запустить скрипты:

  • Из терминала. Если скрипт находится в текущей директории, его можно запустить, указав путь с префиксом ./: Пример:./script.sh.

  • Используя команду sh. Пример: sh script.sh.

  • Используя команду bash: bash script.sh.

Наиболее удобным для исполняемых файлов с установленными правами является подход с префиксом. 

Простые примеры Bash-скриптов для повседневных задач

Есть целый ряд простых готовых Bash-скриптов, которые помогут в автоматизации рутинных задач. 

Скрипт для мониторинга использования диска

Этот скрипт проверяет использование дискового пространства в системе и отправляет предупреждение, если диск заполнен более чем на 90%. 

Скрипт для переименования файлов в директории

Этот скрипт добавляет префикс ко всем файлам в указанной директории.

Скрипт для мониторинга процесса

Этот скрипт проверяет, запущен ли определенный процесс и уведомляет, если процесс не найден.

Скрипт для очистки временных файлов

Этот скрипт удаляет все файлы старше семи дней в каталоге временных файлов.

Скрипт для изменения прав на файлы в директории

Этот скрипт изменяет права доступа для всех файлов в указанной директории, предоставляя полные права владельцу и ограниченные — всем остальным.

Рекомендации по написанию Bash-скриптов и отладке

Несколько советов новичкам:

  • Всегда используйте #!/bin/bash в начале скрипта.

  • Используйте комментарии для пояснения логики.

  • Проверяйте переменные на существование, чтобы избежать ошибок.

  • Для отладки используйте режим -x: bash -x script.sh.

  • Следите за отступами — они не обязательны, но улучшают читаемость.

В Bash-скриптах могут быть синтаксические и логические ошибки. Как их обнаружить: 

  • Опция set -x включает трассировку команд, то есть выводит все команды и их аргументы перед выполнением. Это поможет увидеть, какие команды выполняются и где возможные ошибки. 

  • Команда bash -n script.sh позволяет проверить синтаксис скрипта без его выполнения и выявить синтаксические ошибки в коде.

  • $? переменная позволяет проверить код выхода самой последней команды. Если выйдет ноль — все в порядке. 

  • echo-оператор в коде поможет определить, где ошибки и какие значения будут передаваться в переменные

Заключение

Если только изучаете Bash, начинайте с написания простых скриптов. Для работы достаточно графического или текстового редактора. Не забывайте про отладку готовых скриптов, чтобы не допустить логических и синтаксических ошибок. 

Продукты из этой статьи:
Иконка-Evolution Compute
Evolution Compute
20 октября 2025

Вам может понравиться