Bash скрипты
Работа с командной строкой Linux & Shell скрипты для начинающих
В Linux автоматизация процессов в значительной степени решается исполняемыми скриптами в shell оболочке. Это подразумевает под собой создание файла, содержащего ряд команд, которые исполняются последовательно.
В этой статье мы обсудим основы написания сценариев bash, включая переменные, команды, ввод/вывод и отладку. Каждый пункт сопроводим примерами.
Начнем.
Оглавление
Минимальные требования
Введение
Определение Bash-скрипта
Преимущества Bash-скриптов
Обзор оболочки Bash и интерфейса командной строки
3. Как начать работать с Bash-скриптами
4. Основы Bash скриптов
5. Циклы и ветвления в Bash
Цикл While
Цикл For
Оператор Case
6. Планирование сценариев с помощью Сron
7. Отладка и устранение неполадок Bash-скриптов
8. Заключение
Минимальные требования
Чтобы следовать этому руководству, необходимо иметь следующее:
Работающая версия Linux с доступом к командной строке.
Если у вас не установлен Linux или вы только начинаете его изучать, вы можете легко получить доступ к командной строке Linux через Replit. Replit — это браузерная IDE, в которой вы можете получить доступ к оболочке bash за несколько минут.
Вы также можете установить Linux поверх вашей системы Windows, используя WSL (подсистема Windows для Linux). Инструкция по ссылке.
Введение
Определение Bash-скрипта
Bash-скрипт — это файл, содержащий последовательность команд, которые выполняются программой bash построчно. Он позволяет выполнять ряд действий, таких как переход к определенному каталогу, создание папки и запуск процесса с помощью командной строки.
Сохранив эти команды в сценарии (скрипты), вы можете повторять одну и ту же последовательность шагов несколько раз и выполнять их, запустив сценарий.
Преимущества Bash-скриптов
Сценарии Bash — это мощный и универсальный инструмент для автоматизации задач системного администрирования, управления системными ресурсами и выполнения других рутинных задач в системах Unix/Linux. Некоторые преимущества сценариев оболочки:
Автоматизация: сценарии оболочки позволяют автоматизировать повторяющиеся задачи и процессы, экономя время и снижая риск ошибок, которые могут возникнуть при ручном выполнении.
Портативность: сценарии оболочки можно запускать на различных платформах и операционных системах, включая Unix, Linux, macOS и даже Windows, с помощью эмуляторов или виртуальных машин.
Гибкость: сценарии оболочки легко настраиваются и могут быть легко изменены в соответствии с конкретными требованиями. Их также можно комбинировать с другими языками программирования или утилитами для создания более мощных сценариев.
Доступность. Сценарии оболочки легко писать и не требуют специальных инструментов или программного обеспечения. Их можно редактировать с помощью любого текстового редактора, а в большинстве операционных систем есть встроенный интерпретатор оболочки.
Интеграция: сценарии оболочки можно интегрировать с другими инструментами и приложениями, такими как базы данных, веб-серверы и облачные службы, что позволяет решать более сложные задачи автоматизации и управления системой.
Отладка: сценарии оболочки легко отлаживать, и большинство оболочек имеют встроенные инструменты отладки и сообщения об ошибках, которые помогают быстро выявлять и устранять проблемы.
Обзор оболочки Bash и интерфейса командной строки
Термины «оболочка» и «bash» взаимозаменяемы. Но между ними есть тонкая разница.
Термин «оболочка» относится к программе, которая предоставляет интерфейс командной строки для взаимодействия с операционной системой. Bash (Bourne Again SHell) является одной из наиболее часто используемых оболочек Unix/Linux и является оболочкой по умолчанию во многих дистрибутивах Linux.
Интерфейс оболочки zsh или командной строки выглядит следующим образом:
Оболочка принимает команды от пользователя и отображает вывод
В приведенном выше выводе clockber::~>> — это приглашение оболочки zsh. Когда оболочка используется в интерактивном режиме, в Linux она отображает $, когда ожидает команды от пользователя.
Если оболочка запущена от имени пользователя root (пользователь с правами администратора), приглашение меняется на #. Приглашение оболочки суперпользователя выглядит следующим образом:
[root@host ~]#
Хотя Bash — это тип оболочки, существуют и другие доступные оболочки, такие как оболочка Korn (ksh), оболочка C (csh) и оболочка Z (zsh). Каждая оболочка имеет свой собственный синтаксис и набор функций, но все они имеют общую цель — предоставить интерфейс командной строки для взаимодействия с операционной системой.
Вы можете определить свой тип оболочки с помощью команды ps:
ps
Пример вывода моего терминала:
Проверка типа оболочки. Я использую оболочку zsh
Таким образом, в то время как «оболочка» — это широкий термин, относящийся к любой программе, предоставляющей интерфейс командной строки, «Bash» — это особый тип оболочки, который широко используется в системах Unix/Linux.
Примечание: в этом руководстве мы будем использовать оболочку «bash».
Как начать работать с Bash-скриптами
Как запускать команды Bash из командной строки
Как упоминалось ранее, приглашение оболочки выглядит примерно так:
[user@host ~]$
Вы можете ввести любую команду после знака $ и увидеть результат на терминале.
Как правило, команды имеют следующий синтаксис:
command [OPTIONS] arguments
Давайте рассмотрим несколько основных команд bash и посмотрим их результаты. Обязательно попробуйте выполнить их в своем терминале.
admin@user-new:/$ date
Sat 25 Mar 2023 14 12:04:17 PM MSK
admin@user-new:/usr/lib$ pwd
/usr/lib
admin@user-new:/home$ ls
clockber
admin@user-new:/home$ echo "Hello bash"
Hello bash
Вы всегда можете обратиться к руководству по командам с помощью команды man.
Например, руководство по echo выглядит примерно так:
Как создавать и выполнять сценарии Bash
Соглашения об именах сценариев
По соглашению об именах сценарии bash заканчиваются на .sh. Однако сценарии bash могут прекрасно работать без расширения sh.
Добавляем Шебанг (Shebang)
Скрипты Bash начинаются с шебанга. Шебанг (Shebang) — это комбинация bash # и bang ! за которым следует путь оболочки bash. Это первая строка скрипта. Шебанг говорит оболочке выполнить его через оболочку bash. Shebang — это просто абсолютный путь к интерпретатору bash.
Ниже приведен пример оператора шебанг.
#!/bin/bash
Вы можете найти путь к оболочке bash (который может отличаться от указанного выше) с помощью команды:
which bash
Наш первый bash-скрипт
Наш первый скрипт предлагает пользователю ввести путь. В свою очередь он вернет все содержимое указанного каталога.
Создайте файл с именем show_all.sh с помощью команды vi
. Вы можете использовать любой редактор по вашему выбору.
vi show_all.sh
Добавьте следующие команды в свой файл и сохраните его:
#!/bin/bash
echo "сегодня " `date`
echo -e "\n введите путь к директории:"
read path_to
echo -e "\n ваша директория содержит файлы и папки:"
ls $path_to
Скрипт отобразит текущую дату и содержимое предоставленного пользователем каталога.
Давайте более подробно рассмотрим сценарий построчно. Я снова привожу тот же сценарий, но на этот раз с номерами строк.
#!/bin/bash
echo "Сегодня " `date`
echo -e "\n введите путь к директории:"
read path_to
echo -e "\n ваша директория содержит файлы и папки:"
ls $path_to
Строка #1: Шебанг (#!/bin/bash) указывает на путь к оболочке bash.
Строка #2: команда
echo
отображает текущую дату и время на терминале. Обратите внимание, что дата указана в обратных кавычках.Строка #4: мы хотим, чтобы пользователь ввел правильный путь.Строка #5: Команда чтения считывает ввод и сохраняет его в переменной path_to.
строка #8: Команда
lh
берет переменную с сохраненным путем и отображает текущие файлы и папки.
Выполнение bash-скрипта
Чтобы сделать скрипт исполняемым, назначьте права на выполнение своему пользователю с помощью команды:
chmod u+x show_all.sh
Где,
chmod
изменяет владельца файла для текущего пользователяu:
.+x
добавляет права на выполнение текущему пользователю. Это означает, что пользователь, являющийся владельцем, теперь может запустить сценарий.show_all.sh
— это файл, который мы хотим запустить.
Вы можете запустить скрипт любым из указанных способов:
sh show_all.sh
bash show_all.sh
./show_all.sh
Давайте посмотрим, как он работает