Перейти к основному содержимому

Первая программа на Bash

Разработчику Архитектору

Первая программа на Bash

Подготовка среды: Открытие терминала

Для начала работы необходимо получить доступ к командной строке, где будет происходить ввод команд и запуск скрипта. Командная строка (терминал) представляет собой текстовый интерфейс для взаимодействия с операционной системой.


Доступ к терминалу в разных операционных системах

В Linux: Терминал обычно доступен по умолчанию. Его можно открыть с помощью комбинации клавиш Ctrl + Alt + T. Также часто используется поиск по меню приложений по слову "Terminal". После открытия окно содержит приглашение командной строки, которое показывает текущий путь к директории и имя пользователя.

В macOS: Система macOS также использует оболочку Bash (или Zsh в более новых версиях). Терминал открывается через поиск Spotlight (комбинация Cmd + Space, затем ввод "Terminal") или через папку "Утилиты" в Finder. Интерфейс аналогичен Linux, но может отличаться цветом фона и стилем шрифта по умолчанию.

В Windows: Стандартная командная строка Windows (cmd.exe) отличается от Bash, однако пользователь может использовать инструменты эмуляции.

  • Git Bash: Если установлен пакет Git for Windows, то в меню Пуск появляется приложение "Git Bash". При запуске открывается окно с интерфейсом, похожим на Linux, и встроенной оболочкой Bash. Это самый простой способ начать работу с Bash на Windows без установки дополнительных виртуальных машин.
  • WSL (Windows Subsystem for Linux): Позволяет запустить полноценную среду Linux внутри Windows. В этом случае открывается настоящий терминал Linux, где работает нативный Bash.

Проверка наличия Bash

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

bash --version

Если система корректно настроена, выводится информация о версии Bash, например: GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)

Появление этой строки подтверждает готовность среды к работе со скриптами. Отсутствие ответа или сообщение об ошибке указывает на необходимость установки пакета Bash или настройки переменных окружения.


Структура файла скрипта

Файл скрипта на Bash — это обычный текстовый файл, содержащий последовательность команд. Однако для того чтобы операционная система воспринимала этот файл как исполняемую программу, он должен начинаться с особой строки, называемой "shebang".

Shebang: Магическая первая строка

Shebang (произносится как "ши-бэнг") — это последовательность символов #!, за которой следует полный путь к интерпретатору, предназначенному для обработки содержимого файла. Эта строка сообщает ядру операционной системы, какой именно процессор команд должен выполнить содержимое файла.

Для языка Bash стандартная запись выглядит следующим образом:

#!/bin/bash

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

Путь /bin/bash является стандартным расположением исполняемого файла Bash в большинстве современных дистрибутивов Linux и macOS. В некоторых редких случаях путь может быть /usr/bin/bash, но команда which bash позволяет узнать точное расположение интерпретатора в конкретной системе.


Имя файла и расширение

Имя файла скрипта должно быть осмысленным и отражать его назначение. Традиционно файлы скриптов получают расширение .sh (сокращение от shell), хотя оно не является строго обязательным для работы Bash. Наличие расширения помогает разработчикам и редакторам кода распознавать тип файла и применять соответствующую подсветку синтаксиса.

Пример допустимых имен файлов:

  • hello.sh
  • first_script.sh
  • greet_user.sh

Избегайте использования пробелов в именах файлов. Вместо них используйте нижнее подчеркивание _ или дефис -. Пробелы требуют экранирования при запуске и усложняют чтение команд.


Написание кода первой программы

Теперь перейдем непосредственно к созданию содержимого файла. Первая программа должна быть простой, понятной и демонстрировать базовые возможности вывода данных.

Выбор текстового редактора

Для написания кода используют текстовые редакторы. Можно воспользоваться графическими редакторами (VS Code, Sublime Text, Notepad++, Geany) или консольными редакторами (Nano, Vim, Emacs).

Рекомендация для новичков: Использование редактора nano прямо в терминале. Он прост в освоении, поддерживает управление с помощью клавиш управления и сохраняет изменения автоматически при выходе.

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

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

Содержимое файла hello.sh будет состоять из двух строк. Первая строка — shebang, вторая — команда вывода текста.

#!/bin/bash
echo "Привет, мир! Это моя первая программа на Bash."

Разберем элементы этого кода подробно.

Строка 1: #!/bin/bash Как уже упоминалось, эта строка определяет интерпретатор. Система считывает её первой при запуске файла.

Строка 2: echo "Привет, мир!..." Команда echo является встроенной функцией оболочки. Её прямая задача — вывести переданные ей аргументы на стандартный поток вывода (обычно экран монитора).

  • echo — имя команды.
  • "..." — строковый литерал, заключенный в двойные кавычки. Кавычки необходимы, чтобы оболочка восприняла весь текст внутри как единый аргумент, включая пробелы и специальные символы. Одиночные кавычки '...' также работают, но они обрабатываются немного иначе в плане раскрытия переменных (что пока не важно для первой программы).

Вывод этой команды на экран будет выглядеть так: Привет, мир! Это моя первая программа на Bash.


Расширение функционала: Переменные

Чтобы продемонстрировать работу с данными, можно добавить использование переменной. Переменная — это именованная область памяти, хранящая значение.

#!/bin/bash
name="Будущий разработчик"
echo "Здравствуйте, $name!"

Здесь происходит следующее:

  1. name="Будущий разработчик" — объявление переменной с именем name и присвоение ей значения "Будущий разработчик". Равнознак = не должен иметь пробелов вокруг себя.
  2. echo "Здравствуйте, $name!" — вывод сообщения. Знак доллара $ перед именем переменной ($name) говорит оболочке заменить это выражение на фактическое значение переменной.

Результат выполнения: Здравствуйте, Будущий разработчик!


Сохранение и создание файла

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

Использование редактора Nano

  1. Откройте терминал в желаемой директории.
  2. Введите команду создания файла:
    nano first_program.sh
  3. Откроется окно редактора. Введите код:
    #!/bin/bash
    echo "Привет, мир! Это моя первая программа на Bash."
  4. Чтобы сохранить файл, нажмите Ctrl + O (латинская O), затем Enter для подтверждения имени файла.
  5. Чтобы выйти из редактора, нажмите Ctrl + X.

Использование графического редактора

  1. Откройте VS Code или любой другой редактор.
  2. Создайте новый файл.
  3. Вставьте код.
  4. Нажмите File -> Save As....
  5. Укажите имя first_program.sh и выберите место сохранения (например, домашнюю директорию).
  6. Убедитесь, что сохранен именно текстовый файл.

Установка прав на выполнение

По умолчанию создаваемые файлы имеют права только на чтение и запись, но не на выполнение. Операционная система блокирует запуск файла как программы. Необходимо явно предоставить права на исполнение.

Команда chmod

Для изменения прав доступа используется утилита chmod (change mode). Синтаксис команды:

chmod +x <имя_файла>

Где:

  • +x — флаг, означающий "добавить право на исполнение" (execute).
  • <имя_файла> — название созданного скрипта.

Выполните команду в терминале:

chmod +x first_program.sh

После выполнения этой команды файл получает атрибут исполняемости. Проверить это можно с помощью команды ls -l:

ls -l first_program.sh

В выводе списка файлов вы увидите, что перед именем файла появились буквы rwx (чтение, запись, исполнение) для владельца файла. Например: -rwxr-xr-x 1 user user ... first_program.sh

Буква x в начале строки подтверждает успешную настройку прав.


Запуск программы

Скрипт готов к запуску. Существует два основных способа выполнения файла.

Способ 1: Прямой вызов через точку слэш

Этот метод требует указания относительного пути к файлу, так как система не ищет исполняемые файлы в текущей директории по умолчанию. Точка слэш ./ обозначает "текущую директорию".

Команда выглядит так:

./first_program.sh

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

  1. Находит файл first_program.sh в текущей папке.
  2. Читает первую строку (#!/bin/bash).
  3. Запускает интерпретатор Bash.
  4. Передает ему содержимое файла для исполнения.
  5. Выводит результат на экран.

Способ 2: Вызов через интерпретатор

Можно запустить скрипт, явно указав имя интерпретатора. В этом случае права на выполнение (+x) не обязательны, так как мы передаем файл как аргумент команде bash.

Команда:

bash first_program.sh

Этот метод полезен для тестирования кода без изменения прав доступа, но первый способ (./script.sh) является стандартом для развернутых скриптов.

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

После успешного запуска в терминале появится: Привет, мир! Это моя первая программа на Bash.

Это подтверждает, что скрипт работает корректно.


Типичные ошибки и способы их устранения

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

Ошибка: Permission denied

Сообщение Permission denied возникает, если попытаться запустить файл без прав на исполнение. Решение: Выполнить команду chmod +x <имя_файла>.

Ошибка: /bin/bash: bad interpreter: No such file or directory

Ошибка указывает на то, что система не нашла интерпретатор по указанному пути в строке shebang. Причины:

  1. Неправильный путь к Bash (например, на Windows без WSL или Git Bash путь может отличаться).
  2. Файл был отредактирован в Windows и получил формат перевода строки CRLF вместо Unix LF, из-за чего интерпретатор видит \r как часть пути. Решение:
  • Проверить путь командой which bash.
  • Использовать редактор, поддерживающий конвертацию строк (например, в VS Code переключить режим конца строки в статус-баре на LF).
  • Пересоздать файл в Linux/macOS среде или использовать dos2unix.

Ошибка: command not found

Если в скрипте использована несуществующая команда или опечатка в имени встроенной функции. Решение: Проверить синтаксис и наличие команды в системе.

Ошибка: unexpected token 'newline'

Часто возникает из-за отсутствия новой строки после shebang или неправильного формата файла. Решение: Убедиться, что после #!/bin/bash стоит перевод строки, и файл сохранен в формате UTF-8 без BOM.


Расширение возможностей: Аргументы командной строки

Первая программа может стать еще полезнее, если она сможет принимать данные от пользователя при запуске. Bash позволяет передавать аргументы скрипту.

Пример скрипта с аргументом

Создадим файл greet.sh:

#!/bin/bash
echo "Привет, $1!"

Здесь $1 — специальная переменная, содержащая первый аргумент, переданный при запуске скрипта.

Запуск с аргументами

./greet.sh Timur

Результат: Привет, Timur!

Если передать несколько аргументов:

./greet.sh Timur Tagirov

Результат будет: Привет, Timur! (Так как $1 берет только первое слово).

Для второго аргумента используется $2, для третьего $3 и так далее. Это открывает возможности для создания гибких инструментов автоматизации.


См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).

Освоение главы0%