Ковалев_Никита.md 16 KB

Интегрированная среда разработки Bash (Ковалев Никита 47 группа)

Что такое Bash

BASH (Bourne-Again Shell) — один из наиболее распространенных командных интерпретаторов в UNIX-подобных системах, а также язык интерфейса командной строки, который поддерживает использование переменных, массивов, циклов, функций, арифметических операторов, операций ввода-вывода и прочих возможностей.

Bash был создан и выпущен в 1989 году Брайаном Фоксом как open source замена для Bourne Shell, вышедшей в 1976 году. Его название является аббревиатурой от Bourne Again SHell.

Большинство современных операционных систем, кроме WINDOWS, основаны на UNIX. Это, в том числе, дистрибутивы Linux, macOS, iOS и Android. UNIX характеризуется модульной архитектурой, в которой каждая функция выполняется отдельной программой, а взаимодействие между ними происходит через общую файловую систему. Shell используется для управления этими программами и исполнения команд.

Shell (оболочка) — это программа, обеспечивающая взаимодействие пользователя с системой. В командной строке вы вводите команды, которые оболочка интерпретирует, вызывает соответствующие программы и отображает результаты. Команды могут подаваться не только в текстовом режиме, но и считываться из файла, называемого shell-скриптом или оболочкой shell-программы.

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

Самые популярные командные интерпретаторы — это Terminal (Linux, macOS) и Konsole (Windows). Именно с их помощью можно взаимодействовать с командной оболочкой shell, которая будет принимать специальные команды и передавать их на выполнение операционной системе.

Язык Bash поддерживает переменные, массивы, циклы, функции, условные и арифметические операторы, операции ввода-вывода и другие средства. Но главная его фишка — возможность создавать скрипты для ускорения работы на компьютере и автоматизации рутины. Например, с их помощью можно:

  • быстро переименовывать все файлы в папке;
  • генерировать случайные пароли;
  • создавать и отправлять отчёты по электронной почте;
  • проверять и обновлять систему и приложения;
  • одной командой очищать кэш браузера.

Основы Bash

Для начала — три главных особенности, с которых стоит начать знакомство с Bash:

  1. Написание любого скрипта нужно начинать со строки: #!/bin/bash. После символа #! следует путь к bash-интерпретатору. Вы можете узнать путь к нему (возможно, интерпретатор был установлен в другое место) с помощью команды whereis bash.
  2. Комментарии и примечания нужно указывать после символа # (кроме первой строки, где мы указываем путь к bash-интерпретатору)
  3. Bash не имеет строгой системы типов

Тип данных определяется в зависимости от контекста использования переменной и ее содержимого. Bash устанавливает следующие правила для именования переменных:

  • Имена переменных должны начинаться с латинской буквы (в верхнем или нижнем регистре) или символа подчеркивания.

  • В имени переменной запрещено использовать пробелы или специальные символы.

  • Регистр букв в именах переменных учитывается. Переменные name1 и Name1 считаются разными.

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

Синтаксис, переменные и команды

Переменные

Переменные в Bash объявляются просто:

message="Good morning!"

Теперь переменная message хранит значение — текстовое сообщение «Hello, World!». Вывести значение переменной можно с помощью команды echo:

echo $message

В Bash символ $ называется символом расширения (expansion character). Поставленный перед именем переменной, он указывает на то, что нужно использовать именно значение переменной, а не одноимённую строку.

Следующий код выведет сообщение «message»:

message="Hello, World!"
echo message

Чтобы сохранить в переменной введённое пользователем значение, используйте команду read:

read name
# Пользователь вводит что-нибудь
echo $name

Если вы хотите добавить сообщение перед пользовательским вводом, добавьте флаг -p и сообщение после команды read:

read -p "Enter your name: " name # Будет выведено «Enter your name: »
# Пользователь вводит что-то 
echo $name

Типы данных

Строки (strings) — это набор символов, заключённый в кавычки. В Bash можно писать строки в одинарных '…' или двойных "…" кавычках. Например, 'Привет' и "Мир" — это строки.

Числа (numbers) — это целочисленные значения. Bash поддерживает арифметические операции с целыми числами, включая сложение, вычитание, умножение и деление. Арифметические выражения нужно предварять знаком $ и обрамлять двойными круглыми скобками:

a=2 b=3
echo $(($a + $b)) # Будет выведено 5

Также можно использовать команду expr:

echo $(expr $a + $b)  # Будет выведено 5

Стандартные библиотеки Bash поддерживают следующие арифметические операции:

  • Сложение — +.
  • Вычитание — -.
  • Умножение — *.
  • Целочисленное деление — /.
  • Остаток от деления — %.
  • Возведение в степень — **.

Массивы (arrays) — тип переменных, который может хранить несколько значений. Элементы массива перечисляются в круглых скобках через пробел:

my_array=(apple banana cherry)

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

echo ${my_array[0]} # Выведет «apple»
echo ${my_array[1]} # Выведет «banana»
echo ${my_array[2]} # Выведет «cherry»

А если нам нужно получить сразу все элементы массива, вместо индекса в квадратных скобках нужно поставить символ * или @

Логические значения (boolean) — нужны для того, чтобы проверить, выполняется ли какое-то условие или нет. Они могут быть либо true (истина), либо false (ложь). Например, в операторах if и while мы пишем условие, и если оно true, то выполняем какое-то действие.

В Bash логические значения представлены целыми числами. Число 0 означает true, а любое другое число означает false. Когда мы выводим логическое значение на экран, то вместо true мы видим 0.

Также в Bash есть операторы сравнения. Например, эти нужны для строк:

= проверяет, одинаковы ли две строки. != проверяет, различаются ли две строки. А эти — для чисел:

  • -eq проверяет, равны ли два числа.
  • -ne проверяет, различаются ли два числа.
  • -gt проверяет, больше ли первое число, чем второе.
  • -lt проверяет, меньше ли первое число, чем второе.
  • -ge выводит true, если первое число больше или равно второму.
  • -le выводит true, если первое число меньше или равно второму.

Использовать операторы сравнения можно с помощью команды test. Команда test принимает два значения и оператор сравнения и возвращает 1 или 0 в зависимости от результата:

test "hello" = "hello" 
echo $? 
# Выведет 0 (true), так как строки одинаковые
test "hello" != "world" 
echo $? 
# Выведет 0 (true), так как строки различаются

Ветвления

Ветвления if-then-else позволяют проверить условие и выполнить один набор команд, если условие истинно, и другой набор команд, если условие ложно. Это выглядит так:

if [ условие ]; 
then
    # Команды, которые нужно выполнить, если условие истинно
else
    # Команды, которые нужно выполнить, если условие ложно
fi

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

А если в паре с основным условием нужно проверить дополнительное, используют конструкцию elif:

if [ условие_1 ]; 
then
    # Команды, которые нужно выполнить, если условие_1 истинно
elif [ условие_2 ];
then
    # Команды, которые нужно выполнить, если условие_2 истинно
else
    # Команды, которые нужно выполнить, если все условия ложны
fi

Существует и более короткая форма записи условной конструкции — if-then. Её используют, когда нужно проверить только одно условие:

if [ условие ]; 
then 
# Команды, которые нужно выполнить
fi

В этом случае команды будут выполнены, только если условие истинно.

Cписок логических операторв, которые используются для конструкции if-then-else-fi:

  • -z # строка пуста
  • -n # строка не пуста
  • =, (==) # строки равны
  • != # строки неравны
  • -eq # равно
  • -ne # неравно
  • -lt,(< ) # меньше
  • -le,(<=) # меньше или равно
  • -gt,(>) #больше
  • -ge,(>=) #больше или равно
  • ! #отрицание логического выражения
  • -a,(&&) #логическое «И»
  • -o,(||) # логическое «ИЛИ»

Циклы

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

  • for — когда количество итераций заранее известно.
  • while — когда количество итераций заранее не известно.

Вот как выглядит сигнатура цикла for:

for переменная цикла in элемент1 элемент2 ... элементN
do
# Команды, которые будут выполняться в цикле
done

Количество итераций (часть между in и do) можно указать простым перечислением элементов:

for fruit in apple banana cherry
do
    echo "I like $fruit"
done

Будет выведено:

# I like apple
# I like banana
# I like cherry

Для явного указания нужного количества итераций используют арифметические выражения:

for ((i=0; i<5; i++))
do
  echo "Iteration number $i"
done

Будет выведено:

# Iteration number 0
# Iteration number 1
# Iteration number 2
# Iteration number 3
# Iteration number 4

А вот так выглядит сигнатура цикла while:

while [ условие ]
do
  # Команды, которые будут выполняться в цикле
done

Условие (condition) — это выражение, результат которого является логическим значением true или false. Команды внутри цикла будут выполняться до тех пор, пока condition возвращает true.

Литература

  1. https://skillbox.ru/media/code/kak-polzovatsya-bash-ekspressrukovodstvo-dlya-nachinayushchikh/
  2. https://cloud.vk.com/blog/detali-raboty-bash
  3. https://1cloud.ru/blog/bash_basics