Главная Веб-разработка Что такое Linux Bash и как им пользоваться

Что такое Linux Bash и как им пользоваться

от admin

Заставляем пингвина делать всё, что нам нужно.

Linux — операционная система с открытым исходным кодом, которая даёт пользователям больше гибкости и контроля над системой. С помощью Bash — встроенного языка командной строки — можно автоматизировать рутинные задачи и управлять системой с помощью скриптов. В этой статье разберём, что такое Bash, зачем он нужен и как с его помощью писать полезные скрипты.

Что такое Bash

Кроме того, Bash — это и язык программирования, который позволяет создавать скрипты для автоматизации задач. Bash-скрипты поддерживают переменные, циклы, условия, функции и могут взаимодействовать с файловой системой и вводом-выводом.

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

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

Хотя Bash чаще всего ассоциируют с Linux, он также работает на macOS, а в Windows его можно использовать через WSL (Windows Subsystem for Linux).

Как выбрать редактор для работы

Прежде чем погрузиться в основы Bash, нужно выбрать редактор и подготовить рабочее окружение. Для написания скриптов подойдёт любой текстовый редактор, встроенный в операционную систему, однако гораздо удобнее работать в специально настроенной среде. Ниже — три популярных варианта: от классических консольных редакторов до современной графической IDE.

Vim: нестареющая классика

Что такое Linux Bash и как им пользоваться

Интерфейс редактора Vim в терминале
Скриншот: Vim / Skillbox Media

  • Есть подсветка синтаксиса и автодополнение кода.
  • С помощью плагинов можно превратить Vim в полноценную консольную IDE.
  • Большие возможности кастомизации.
  • Новичкам бывает трудно научиться работать с редактором.
  • Нужно выделить время на настройку.

Nano: минимализм и простота

Что такое Linux Bash и как им пользоваться

Интерфейс редактора Nano в терминале
Скриншот: Nano / Skillbox Media

  • Простой в освоении, что полезно для новичков.
  • Интуитивно понятный интерфейс.
  • Нет поддержки плагинов, автоматического завершения кода.
  • Мало возможностей для кастомизации.

VS Code: золотой стандарт

Что такое Linux Bash и как им пользоваться

Графический интерфейс редактора VS Code с открытой страницей дополнения Bash IDE
Скриншот: Visual Studio Code / Skillbox Media

  • Подходит для программирования на любом языке.
  • Есть подсветка синтаксиса, автоматическое завершение кода, плагины для кастомизации и даже ИИ-помощники.
  • Современный пользовательский интерфейс.
  • Может сильно нагружать систему, если установить много плагинов.
  • Долго запускается на слабых компьютерах.

Пока можете выбрать редактор, который вам больше понравился по описанию. Позже, безусловно, у вас будет время попробовать несколько решений и определить фаворита. Мы в этой статье будем показывать всё на примере редактора Nano.

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

touch имя_файла.sh

Если не указать точный путь к файлу, то команда touch создаст его в домашней папке Linux.

Что такое Linux Bash и как им пользоваться

Файл script.sh в домашней папке — результат работы команды touch
Скриншот: Linux Ubuntu / Skillbox Media

Созданный файл можно открыть в любом текстовом редакторе. Это можно сделать двойным кликом левой кнопки мыши или с помощью терминала. При втором способе надо выполнить команду, которая состоит из названия редактора и имени файла. Например, вот так можно открыть файл с помощью Nano:

nano script.sh

«Привет, мир!»: пишем первый скрипт

По традиции программисты начинают изучать новый язык программирования с помощью программы, которая выводит на экран фразу «Hello, World!». Не будем идти против устоев и пойдём уже по протоптанному пути 🙂

Создайте файл с расширением .sh, откройте его в текстовом редакторе и вставьте в него код нашего первого скрипта:

#!/bin/bash echo “Hello, World!”

В коде выше:

  • #! /bin/bash — строка, которая указывает, какая программа должна выполнить команды в файле. Например, если бы мы указали #! /bin/python3, то система ожидала бы от нас кода на Python. В сообществе эту строку называют «шебанг».
  • echo «Hello, World!» — команда, которая выводит фразу после себя в терминал.

В интерфейсе редактора Nano код выглядит так:

Что такое Linux Bash и как им пользоваться

Редактор Nano с открытым скриптом
Скриншот: Nano / Skillbox Media

Сохраняем скрипт

Перед тем как закрывать редактор, надо сохранить скрипт. В современных редакторах, например, в VS Code, можно настроить функцию автосохранения. В Vim, Nano и других консольных программах всё надо делать вручную.

В Nano для сохранения файла используйте сочетание клавиш Ctrl + O, а для выхода из программы — Ctrl + X.

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

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

chmod +x script.sh

После этого скрипт можно запустить с помощью команды ./:

./script.sh

Программа, которую мы написали ранее, просто выведет в терминал приветствие «Hello, World!»:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Аргументы

./имя_скрипта.sh аргумент1 аргумент2 аргумент3…

Давайте разберёмся на примере. Представьте, что вы написали код, который выводит в терминал приветствие для Михаила:

#!/bin/bash echo “Привет, Михаил!”

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

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

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

./script.sh Екатерина

В терминале появится приветствие с именем, которое указали во время запуска:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

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

#!/bin/bash echo “Имя: $1” echo “Фамилия: $2” echo “Возраст: $3”

Запустим код с помощью команды ./script.sh Екатерина Иванова 31 и посмотрим на вывод в терминале:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Переменные

Чтобы объявить переменную, нужно указать её название, а после поставить знак равенства и вписать значение:

name=”Иван”

Чтобы обратиться к переменной, нужно вписать её название после символа доллара ($):

$name

Давайте создадим скрипт, в котором будет одна переменная с заранее известным значением — переменная с именем Иван, а возраст пользователь должен будет передать в виде аргумента:

#!/bin/bash name=”Иван” echo “Здравствуйте, $name!” echo “Ваш возраст: $1”

Вот что выведет скрипт:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Значения переменных можно использовать в математических операциях. Для этого в Bash используют конструкцию $(()). Напишем скрипт, который складывает значения двух переменных:

#!/bin/bash variable1=86 variable2=91 total=$((points1 + points2)) echo “Сумма: $total”

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

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Значения переменных можно не только складывать. Вот список математических операторов, доступных в Bash:

Операция Оператор
Сложение +
Вычитание
Умножение *
Целочисленное деление /
Остаток от деления %
Возведение в степень **
Читать также:
Что делает функция len() в Python и как ей пользоваться — статьи на Skillbox / Skillbox Media

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

Вот как она выглядит в общем виде:

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

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

Сравнения чисел
Операция Оператор
Равно -eq
Не равно -ne
Меньше -lt
Больше -gt
Меньше или равно -le
Больше или равно -ge
Сравнения строк
Операция Оператор
Равно =
Не равно !=
Меньше <
Больше >
Строка пустая -z
Строка не пустая -n
Проверка файлов
Операция Оператор
Файл существует -e
Обычный файл -f
Исполняемый файл -x
Директория -d
Файл доступен для чтения -r
Файл доступен для записи -w
Логические операции
Операция Оператор
Логическое И &&
Логическое ИЛИ ||

Напишем программу, которая в виде аргумента будет получать количество баллов пользователя и сообщать, сдал он экзамен или нет. Договоримся, что для успешной сдачи экзамена надо набрать не менее 85 баллов:

#!/bin/bash minimum_score=85 user_score=$1 if [ $user_score -gt $minimum_score ]; then echo “Вы сдали экзамен!” else echo “Вы не сдали экзамен.” fi

Вот что программа выведет, если запустить её с разными аргументами:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Циклы

Циклы — конструкции, которые позволяют выполнять одну и ту же последовательность команд несколько раз. Например, с их помощью можно последовательно обработать несколько файлов или вывести в терминал заданную последовательность чисел. В Bash есть три вида циклов: for, while и until. Давайте детально рассмотрим каждый.

Цикл for

Цикл for выполняет команду для каждого значения из списка. Для примера напечатаем с его помощью числа от 1 до 10:

#!/bin/bash for number in 1 2 3 4 5 6 7 8 9 10; do echo “Число: $number” done

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Ещё цикл for можно использовать для обхода файлов в директории. Скрипт откроет каждый файл, соответствующий указанным параметрам, и выполнит заданное действие:

#!/bin/bash for file in *.txt; do echo “Файл: $file” done

Цикл while

Цикл while выполняет команды, пока условие истинно. Как только условие становится ложным, выполнение цикла прекращается. В качестве примера снова напишем скрипт для вывода чисел от 1 до 10. На этот раз слегка изменим алгоритм: создадим переменную, значение которой будем увеличивать на каждом шаге до тех пор, пока оно не станет равно 10. Это и остановит выполнение кода:

#!/bin/bash number=1 while [ $number -le 10 ]; do echo “Число: $number” number=$((number + 1)) done

Вот что появится в терминале после запуска скрипта:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Цикл until

Цикл until — противоположность while: он выполняет команды, пока условие остаётся ложным. Цикл завершится, когда условие станет истинным. Теперь выведем числа в обратном порядке. Для этого создадим переменную со значением 10 и на каждом шаге будем вычитать из него 1. Будем продолжать до тех пор, пока значение переменной не станет единицей, — это остановит выполнение кода:

#!/bin/bash number=10 until [ $number -lt 1 ]; do echo “Обратный отсчёт: $number” number=$((number – 1)) done

Результат работы кода:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Конструкция Case

В общем виде конструкция case в Bash выглядит так:

case variable in pattern1) command1 ;; pattern2) command2 ;; pattern3) command3 ;; *) command_default ;; esac

В ней:

  • variable — переменная, которую нужно проверить.
  • pattern1, pattern2, pattern3 — возможные значения, среди которых скрипт будет искать истинное.
  • command1, command2, command3 — команды, которые выполнятся, если значение переменной совпадёт с соответствующим шаблоном.
  • *) — шаблон по умолчанию, содержимое которого выполнится в любом случае.
  • command_default — команды по умолчанию.
  • esac — ключевое слово, которое указывает на завершение конструкции case. Если обратите на него внимание, то esac — буквально case наоборот.

Напишем скрипт, который при запуске выводит в терминал текущий день недели. Для этого используем case, а переменной date присвоим значение date +%u. Эта команда обращается к утилите date — встроенному инструменту Linux, который отслеживает дату и время, и возвращает числовое значение дня недели (1 — понедельник, 2 — вторник и так далее).

Вот как выглядит код этого скрипта:

#!/bin/bash day=$(date +%u) case $day in 1) echo “Сегодня понедельник” ;; 2) echo “Сегодня вторник” ;; 3) echo “Сегодня среда” ;; 4) echo “Сегодня четверг” ;; 5) echo “Сегодня пятница” ;; 6) echo “Сегодня суббота” ;; *) echo “Неверное значение” ;; esac

А вот что он выводит в терминал:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Функции

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

В общем виде функции в Bash выглядят так:

имя_функции () { тело_функции }

В ней:

  • имя_функции — идентификатор, с помощью которого функцию можно будет вызвать в любом месте кода.
  • тело_функции — команды, которые функция выполняет.

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

check_even() { if (( $1 % 2 == 0 )); then return 0 else return 1 fi }

С помощью echo. Если надо вывести строку или число, которое не входит в промежуток 0–255, лучше всего использовать ключевое слово echo.

check_even() { if (( $1 % 2 == 0 )); then return 0 # Чётное else return 1 # Нечётное fi }

Давайте напишем функцию, которая ищет в папке файлы по названию, переданному пользователем в качестве аргумента.

Код скрипта:

#!/bin/bash # Функция для поиска файла по имени check_file() { if [ -e “$1” ]; then echo “Файл ‘$1’ существует.” else echo “Файл ‘$1’ не найден.” fi } check_file “file.txt” # Вызываем функцию и передаём ей имя файла

Что скрипт выведет в терминал:

Что такое Linux Bash и как им пользоваться

Скриншот: Bash / Skillbox Media

Главное

  • Bash — командная оболочка Linux и одноимённый язык программирования.
  • С помощью Bash можно разрабатывать скрипты для автоматизации рутинных задач. Например, можно создать скрипт, который будет автоматически переименовывать файлы по шаблону.
  • Bash поддерживает работу с переменными, функциями, циклами, математическими вычислениями, файловой системой компьютера и операциями ввода-вывода.
  • Скрипты на Bash можно писать в любом текстовом редакторе, но удобнее делать это в специальных средах — например, в Vim, Nano или VS Code.

Похожие статьи