Раздел помощи SpaceWeb

Основы Bash в Linux: руководство по написанию скриптов

15 ноя, 2023

В Linux автоматизация процессов во многом зависит от сценариев оболочки. Это предполагает создание файла, содержащего ряд команд, которые можно вместе выполнять.

В этой статье мы поделимся основами создания сценариев bash и покажем примеры каждого из них.

Что такое Bash

Bash (Bourne Again Shell) – это программа-оболочка, которая предоставляет пользователям среду для ввода команд и запуска других приложений. Когда вы открываете терминал в большинстве дистрибутивов Linux, вы по умолчанию используете оболочку Bash.

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

Преимущества сценариев Bash

IT-специалисты широко используют Bash для выполнения широкого спектра задач, в том числе:

  • Выполнение команд. Интерфейс командной строки Bash позволяет пользователям управлять запущенными процессами, перемещаться по файловой системе, запускать приложения и управлять файлами и каталогами.
  • Сценарии. Программисты пишут сценарии Bash и выполняют последовательности команд для автоматизации рабочих процессов и создания новых инструментов и функций.
  • Обработка данных. Bash поддерживает использование пайп (|) для передачи вывода одной команды в другую, позволяя последовательно применять цепочку операций к данным. Например, специалисты по обработке данных и аналитики могут использовать пайпы Bash для быстрой обработки данных.
  • Настройка среды. Файлы конфигурации (.bashrc и .bash_profile) позволяют пользователям настраивать среду Bash, псевдонимы, переменные среды и запросы.
  • Планирование задач. Скрипты Bash можно запланировать для запуска в определенное время или через определенные промежутки времени. Например, администраторы баз данных используют Bash для планирования резервного копирования или оптимизации БД.
  • Программирование и разработка. Разработчики используют Bash для компиляции и запуска программного обеспечения, управления зависимостями проекта или автоматизации рабочих процессов разработки.
  • Системное администрирование. Системные администраторы используют Bash для настройки служб, мониторинга ресурсов, развертывания приложений и выполнения соответствующих задач по управлению системой.
  • Сеть. Сетевые администраторы используют команды Bash ssh и netstat, чтобы облегчить передачу данных и удаленное управление системой.
  • Интерактивные рабочие процессы. Bash может запрашивать у пользователей ввод данных – это очень удобно для создания управляемых рабочих процессов. Например, специалисты службы поддержки могут разрабатывать управляемые рабочие процессы для устранения распространенных проблем вместо того, чтобы лично проводить конечного пользователя через весь процесс.

Основные команды Bash 

Вот список некоторых из наиболее часто используемых команд в среде Bash:

Основные команды Bash
Команда Значение
cd Изменяет текущий каталог на другой.
ls Выводит список содержимого текущего каталога.
mkdir Создает новый каталог.
touch Создает новый файл.
rm Удаляет файл или каталог.
cp Копирует файл или каталог.
mv Перемещает или переименовывает файл или каталог.
echo Выводит текст в терминал.
cat Конкатенирует и выводит содержимое файла.
grep Ищет шаблон в файле.
chmod Изменяет права доступа к файлу или каталогу.
sudo Запускает команду с административными привилегиями.
df Отображает доступное дисковое пространство.
history Показывает список ранее выполненных команд.
ps Отображает информацию о работающих процессах.

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

Bash-скрипты – это текстовые файлы, которые можно создать в любом текстовом редакторе. 

Важно! Эти скрипты обязательно должны иметь права на выполнение. 

Давайте рассмотрим некоторые из наиболее популярных текстовых редакторов, которые помогут вам при создании Bash-скриптов:

  • Nano. Простой текстовый редактор, который включен в большинство дистрибутивов Linux. Он отличается простым и интуитивно понятным интерфейсом, а также имеет дополнительные полезные функции – например, подсветку синтаксиса.
  • Vim. Это одним из самых популярных текстовых редакторов для Linux. Он предлагает множество функций, которые ускоряют процесс написания кода – подсветку синтаксиса, автодополнение и макросы. Однако некоторым начинающим пользователям он может показаться сложным.
  • Emacs. Еще один популярный текстовый редактор для Linux. Emacs также обладает множеством функций, которые значительно упрощают процесс написания кода. Одной из его главных особенностей является возможность запуска интерпретатора Bash прямо внутри редактора, что упрощает тестирование скриптов без выхода из него.

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

Шебанг начинается с символа решетки (#), за которым следует восклицательный знак (!), а затем указывается путь к интерпретатору. 

Например, для использования интерпретатора Bash пропишите:

#!/bin/bash

Вы также можете добавлять комментарии к своим скриптам, начиная строку с символа решетки. Комментарии предоставляют описание функциональности скрипта и не выполняются интерпретатором.

Например:

# Это мой комментарий

Как запустить Bash-скрипт

Для запуска Bash-скрипта в операционной системе Linux вам нужно предоставить ему разрешение на выполнение. Это можно сделать с помощью команды «chmod». Она позволяет изменять права доступа к файлам и директориям в системе.

Синтаксис команды «chmod» выглядит следующим образом:

chmod опции права_доступа файл

Где:

  • «опции» – дополнительные параметры, которые можно указать для команды «chmod».
  • «права_доступа» – специальный код, который определяет права доступа к файлу или директории.
  • «файл» – путь к файлу или директории, права доступа к которой вы хотите изменить.

Чтобы сделать файл исполняемым, вам нужно добавить бит исполнения («x») к правам доступа к файлу. 

Например, давайте предположим, что у нас есть файл с именем «sweb.sh», и мы хотим сделать его исполняемым. Мы можем использовать следующую команду:

chmod +x sweb.sh

Эта команда добавит бит исполнения для текущего пользователя. 

Теперь, чтобы выполнить Bash-скрипт в Linux, вы можете вызвать его из терминала, указав путь к скрипту:

./sweb.sh

Результат выполнения скрипта будет отображен в терминале.

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

Параметры командной строки предоставляют возможность передавать аргументы скрипту Linux при его выполнении. 

Эти аргументы могут быть обращены внутри скрипта через специальные переменные: $1, $2, $3…, где $1 – это первый параметр, $2 – второй и так далее.

Давайте напишем простой скрипт:

#!/bin/bash
echo «Hello, $1!»

Теперь запустим скрипт, передав ему аргумент, в данном случае, имя пользователя (параметр $USER):

./hello.sh $USER

Результат выполнения скрипта будет отображен в терминале.

Кроме того, вам доступны и другие специальные переменные командной строки:

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

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

#!/bin/bash
echo "Hello, $1!"
echo "Количество переданных параметров: $#"

Переменные

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

Для создания переменной в Bash необходимо использовать оператор присваивания (=). 

Например:

host=«Spaceweb»

Важно! Между именем переменной, оператором присваивания и значением не должно быть пробелов.

Чтобы получить значение переменной, используйте ее имя с символом доллара ($), после команды «echo». Например:

echo $host

Также вы можете присваивать значения переменным, считывая их с клавиатуры с помощью команды «read». 

Например, следующий сценарий запрашивает у пользователя ввод имени и сохраняет его в переменной:

#!/bin/bash
echo "Ваше имя"
read name
echo "Привет, $name! "

ИЛИ

#!/bin/bash
echo "Please enter your name"
read username
echo "Hello, $username! Welcome to the Bash world."

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

Условные операторы в Bash-скриптах позволяют выполнить определенные действия в зависимости от того, выполняется ли какое-то условие или нет. В Bash, условия заключаются в квадратные скобки и передаются в команду «if».

Вот как выглядит синтаксис оператора «if»:

if [условие]

then
пропишите команды, которые необходимо выполнить, если условие верно
fi

Здесь условие обязательно записывается в квадратных скобках, и если оно истинно, то команды, указанные между «then» и «fi», будут выполнены.

Кроме того, в условных конструкциях могут использоваться операторы сравнения, такие как:

- «-eq» – равно;
- «-ne» – не равно;
- «-gt» – больше;
- «-lt» – меньше;
- «-ge» – больше или равно;
- «-le» – меньше или равно.

Пример: 

Циклы

Циклы в Bash позволяют выполнять одни и те же команды несколько раз. Существует два основных типа циклов: цикл «for» и цикл «while».

Цикл «for» 

Используется при выполнении команд для каждого элемента из определенного списка.

Синтаксис цикла «for» следующий:

for переменная in список
do
  пропишите команды, которые необходимо выполнить
done

Здесь «переменная» последовательно принимает значения из «списка», и для каждого значения выполняются указанные команды между ключевыми словами «do» и «done».

Пример:

Цикл «while»

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

Синтаксис цикла «while» выглядит следующим образом:

while [условие]
do
  команды
done

Здесь команды, указанные между «do» и «done», будут выполняться, пока «условие» остается истинным. Условие проверяется перед каждой итерацией цикла.

Пример: 

Функции

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

  1. Создание функции

Синтаксис создания функции выглядит следующим образом:

имя_функции () {
 команды_и_выражения
}
  1. Аргументы функции

Функции могут принимать аргументы, которые передаются внутри круглых скобок при вызове функции. Внутри функции аргументы доступны через специальные переменные, такие как $1, $2…, где $1 представляет первый аргумент, $2 – второй и так далее:

my_function () {
 echo "Первый аргумент: $1"
 echo "Второй аргумент: $2"
}
my_function аргумент1 аргумент2

Например:

#!/bin/bash
function myfunc {
echo "This is an example of using a function"
}
count=1
while [ $count -le 3 ]
do
myfunc
count=$(( $count + 1 ))
done
echo "This is the end of the loop"
myfunc
echo "End of the script"

Вывод:

Работа с файлами и директориями

Bash-скрипты предоставляют средства для выполнения различных действий с файлами и директориями в операционной системе Linux. 

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

test -e filename

Если файл существует, то эта команда вернет значение 0. В противном случае она вернет ненулевое значение. 

Как создать скрипт в Linux

  1. Откройте ваш текстовый редактор и создайте файл с именем hello.sh. В этом примере мы будем использовать nano:

$ nano hello.sh

  1. Скопируйте и вставьте следующие строки в новый файл:

#!/bin/bash
echo "Hello World"

  1. Перейдите в каталог, где находится ваш скрипт myscript.sh, и сделайте его исполняемым:

$ chmod +x hello.sh

  1. Теперь вы готовы выполнить ваш первый скрипт на Bash:

$ ./hello.sh

ИЛИ

sh hello.sh

ИЛИ

bash hello.sh

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

Hello World