Первая программа на 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.shfirst_script.shgreet_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!"
Здесь происходит следующее:
name="Будущий разработчик"— объявление переменной с именемnameи присвоение ей значения"Будущий разработчик". Равнознак=не должен иметь пробелов вокруг себя.echo "Здравствуйте, $name!"— вывод сообщения. Знак доллара$перед именем переменной ($name) говорит оболочке заменить это выражение на фактическое значение переменной.
Результат выполнения:
Здравствуйте, Будущий разработчик!
Сохранение и создание файла
После написания кода необходимо сохранить его в файл с правильным расширением.
Использование редактора Nano
- Откройте терминал в желаемой директории.
- Введите команду создания файла:
nano first_program.sh
- Откроется окно редактора. Введите код:
#!/bin/bashecho "Привет, мир! Это моя первая программа на Bash."
- Чтобы сохранить файл, нажмите
Ctrl+O(латинская O), затемEnterдля подтверждения имени файла. - Чтобы выйти из редактора, нажмите
Ctrl+X.
Использование графического редактора
- Откройте VS Code или любой другой редактор.
- Создайте новый файл.
- Вставьте код.
- Нажмите
File->Save As.... - Укажите имя
first_program.shи выберите место сохранения (например, домашнюю директорию). - Убедитесь, что сохранен именно текстовый файл.
Установка прав на выполнение
По умолчанию создаваемые файлы имеют права только на чтение и запись, но не на выполнение. Операционная система блокирует запуск файла как программы. Необходимо явно предоставить права на исполнение.
Команда 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
При вводе этой команды система:
- Находит файл
first_program.shв текущей папке. - Читает первую строку (
#!/bin/bash). - Запускает интерпретатор Bash.
- Передает ему содержимое файла для исполнения.
- Выводит результат на экран.
Способ 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.
Причины:
- Неправильный путь к Bash (например, на Windows без WSL или Git Bash путь может отличаться).
- Файл был отредактирован в 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 и так далее. Это открывает возможности для создания гибких инструментов автоматизации.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). История развития оболочек представляет собой непрерывный процесс эволюции технологий. Каждая новая версия решала конкретные проблемы своих предшественников и добавляла новые возможности. Стандартные утилиты командной строки включают — Файловые операции — ls, cd, mkdir, rm, cp, mv, chmod, chown, Текстовая обработка — cat, grep, sed, awk, sort, uniq, cut, head, tail, Системная… Примеры переменных окружения — HOME — домашняя директория пользователя, PATH — список директорий для поиска исполняемых файлов, USER — имя текущего пользователя, PWD — текущая рабочая директория Кавычки, точки, запятые, скобки и прочие знаки препинания. Язык Bash предоставляет богатый набор средств для управления логикой выполнения скрипта. Эти конструкции позволяют принимать решения на основе условий и повторять действия многократно. Оболочка… Встроенная команда — это функция, реализованная непосредственно внутри процесса интерпретатора командной строки. Оболочка выполняет такие команды без создания отдельного дочернего процесса. Код… Подстановка значений — это механизм, при котором оболочка заменяет имя переменной на её фактическое значение перед выполнением команды. Существует несколько способов расширения переменных, каждый из… Bash — это язык командной оболочки, который обеспечивает взаимодействие пользователя с операционной системой. Его главная сила заключается не только в выполнении отдельных команд, но и в возможности… Локальная переменная в Bash — это переменная, чья область видимости ограничена телом функции. Такая переменная не влияет на глобальные переменные с тем же именем, существующие вне функции.… Файловая система — это метод организации хранения данных на носителе информации, обеспечивающий упорядоченное размещение файлов и каталогов. Обработка ошибок в Bash базируется на нескольких основных подходах. Выбор метода зависит от контекста задачи и требований к надежности скрипта. Программа htop представляет собой улучшенную версию стандартной утилиты top. Она предлагает графический интерфейс с возможностью прокрутки списка процессов, цветового кодирования и интерактивного…История оболочки Bash
Экосистема скриптов и автоматизации на Bash
Основы языка Bash
Синтаксис и специальные символы в Bash
Ключевые слова и зарезервированные конструкции
Встроенные команды и функции оболочки
Переменные и подстановка значений
Условные операторы и циклы в Bash
Функции и локальные переменные
Работа с файлами, каталогами и процессами
Обработка ошибок и коды возврата
Популярные утилиты и примеры скриптов