Тариф успешно добавлен в корзину
В корзину
url image

Знакомство с Bash

В статье рассмотрим, что такое Bash, области применения bash-скриптов, также покажем, как написать и запустить простой bash-скрипт.

Введение

Bash — одна из наиболее популярных командных оболочек в операционных системах семейства *nix: Linux, Unix и других.

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

Unix-подобная (иногда их называют UN*X- или *nix-системы) операционная система сходна по некоторым свойствам с системами семейства UNIX, но не обязательно соответствует Единой спецификации Unix.

Bash исполняет в операционной системе несколько ролей и функций:

Роль

Функция

1. Оболочка операционной системы

Предоставляет пользователю интерфейс для взаимодействия с функциями системы

2. Интерпретатор командной строки 

Интерпретирует (распознаёт и исполняет) команды, вводимые пользователем в CLI

3. Язык для составления команд и сценариев (скриптов)

Устанавливает правила, определяющие внешний вид программы и действия, которые выполнит компьютер 

Интерфейс командной строки (Command line interface, CLI), или консоль, позволяет человеку взаимодействовать с компьютером путём отправки текстовых команд заданного формата. Консоль противопоставляется системам управления на основе меню и графического интерфейса.

Графический интерфейс пользователя (GUI, Graphical User Interface) позволяет пользователю взаимодействовать с системой через графические элементы на экране.

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

Эмулятор терминала отображает видеотерминал внутри другой системы отображения: например, внутри графического интерфейса пользователя. В нём можно работать с CLI и другими текстовыми интерфейсами. Эмулятор можно запускать как на той же машине, так и на удалённых серверах, соединяясь с ними при помощи утилит telnet, ssh и т. д.

История оболочек

Первая оболочка для UNIX под названием V6 появилась в 1971 году. У неё были следующие особенности:

  • для работы с шаблонами поиска предназначалась отдельная утилита glob, для работы с условиями — команда if;
  • компактный синтаксис (при помощи операторов <, >, >>, |) позволял перенаправлять ввод и вывод от одной команды к другой;
  • предусматривалось последовательное выполнение нескольких программ или утилит в одной команде (с помощью оператора ;) и асинхронных команд (с помощью оператора &);
  • возможность составления скриптов отсутствовала.

В 1977 Стивен Борн создал оболочку Bourne (или sh), добавив, в частности, возможность создания скриптов. Bourne стала основой для дальнейших версий оболочек: Korn shell (ksh), Almquist shell (ash), Bourne Again Shell (bash) и многих других.

Оболочка bash была создана в 1987 году. Название bash — акроним Bourne Again Shell (игра слов Bourne Again Shell, снова оболочка Борна — born-again Shell, возрождённая оболочка). Сегодня она используется в качестве оболочки по умолчанию в большинстве дистрибутивов Linux. 

На рисунке ниже представлена история появления основных оболочек.

История развития оболочек с 1977 года

Сегодня в различных дистрибутивах *NIX-систем по умолчанию используются следующие оболочки:

Название

Год выпуска

Дистрибутивы, в которых оболочка используется по умолчанию

С shell (csh)

1978

FreeBSD (вариация tcsh)

Korn shell (ksh)

1983

Проприетарные системы семейства UNIX (Solaris, HP-UX, AIX), OpenBSD

GNU Bash

1988

Операционные системы на основе Linux для настольных компьютеров. Существуют версии bash для Microsoft Windows

Almquist shell (ash)

1989 

Исполнение скриптов в Debian и Ubuntu (вариация от Debian — dash)

Z shell (z sh)

1990 

Mac OS, Kali Linux

Что такое bash-скрипт

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

Готовый скрипт можно запускать либо вручную, когда это требуется, либо по расписанию. Чтобы автоматизировать запуск скрипта, нужно включить его в задания для cron — службы для выполнения заданий в определённое время либо с заданной периодичностью. Поэтому bash-скрипты — удобный способ автоматизировать выполнение регулярных задач.

Области применения bash-скриптов

Скрипты полезны как при администрировании систем семейств Linux и Unix, так и в повседневной работе с этими системами. Кроме того, знание языка bash поможет разобраться в скриптах других авторов и адаптировать их с учётом личных требований.

Где рекомендуется применять

  • Работа с содержимым файлов: поиск файлов, фрагментов текста, преобразование текста, запись изменённого содержимого в новые файлы.
  • Регулярно выполняемые задачи, например, резервное копирование — путём архивирования определённых каталогов, или освобождение дискового пространства — путём удаления старых логов и временных файлов.

Где неэффективно применять

  • Для ресурсоемких задач, особенно когда важна скорость исполнения — например, поиск и сортировка в больших массивах данных.
  • Когда необходим графический интерфейс (GUI) — например, для отображения видео.

Bash для разработчика

Использование bash вместо графического интерфейса экономит ресурсы компьютера, так как они не тратятся на отображение графики. Поэтому bash — предпочтительный выбор, если у вас запущено несколько требовательных к ресурсам программ, работает виртуальная машина или ограничены вычислительные ресурсы.

Многие IT-специалисты, от дата-аналитика до бэкенд-разработчика, обычно используют несколько языков программирования и часто — несколько IDE. При помощи bash можно централизованно запускать скрипты на разных языках, чтобы они могли эффективно взаимодействовать друг с другом. 

Например, с помощью bash можно:

  • выполнить запрос к базе данных с помощью SQL;
  • использовать результаты для проведения анализа в R;
  • использовать полученные результаты в качестве входных данных для скрипта на Python.

В bash вы можете работать с любым языком программирования, установленном на компьютере.

Редакторы

Писать скрипты можно в любом удобном текстовом редакторе — например, в том, который встроен в ваш дистрибутив Linux по умолчанию.

Вот некоторые из таких редакторов:

  • nano

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

  • vim

Консольный редактор, есть в большинстве дистрибутивов. Для заучивания сочетаний клавиш потребуется время, но многие ценят этот редактор за возможность выполнять действия с текстом несколькими нажатиями клавиш: например, yy — скопировать текущую строку, p — вставить её строкой ниже.

Текстовый редактор VIM — краткое руководство.

  • gedit 

Редактор с минималистичным графическим интерфейсом, включён в дистрибутивы на основе Ubuntu.

Во всех перечисленных редакторах автоматически подсвечивается синтаксис в  соответствии с языком скрипта (типом файла), если у файла есть соответствующее расширение — для bash-скрипта это расширение .sh.

Создание и запуск скрипта

  1. Убедитесь, что работаете не под учётной записью root (суперпользователя): у неё есть полномочия на выполнение многих команд, которыми можно случайно повредить систему — например, на удаление системных каталогов. Рекомендуется работать под учётной записью непривилегированного пользователя.

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

    username ~$ 

    Тильда ~ означает, что пользователь находится в своём домашнем каталоге /home/username.

    У суперпользователя (root) приглашение к вводу команд выглядит так: 

    root ~#

    В этой статье строки с командами будут выглядеть так:

    $ commandname

    Выделенный жирным символ $ — приглашение, далее — текст команды.

  2. Сначала нужно выяснить, в какой оболочке работает текущий пользователь. Для этого введите в командной строке bash следующую команду:

    $ echo $SHELL

    Выводимый результат:

    /bin/bash

    В результате выполнения команды мы узнаём, что оболочка по умолчанию у текущего пользователя — bash.

  3. Затем рекомендуется перейти в домашний каталог пользователя, /home — в нём запускать скрипты будет безопаснее всего:

    $ cd

    Это команда смены каталога — сокращение от change directory. Обычно после команды cd указывают каталог назначения, а если он не указан, каталог меняется на /home.

  4. Запустите команду pwd, указывающую текущий каталог, чтобы убедиться, что вы находитесь в /home:

    $ pwd

    Выводимый результат:

    /home/username, где username — учётная запись, под которой вы работаете.

    На нахождение в домашнем каталоге указывает ещё тильда ~ перед символом $, но она отображается не во всех вариантах оформления оболочки.

  5. Создайте файл в текстовом редакторе — например, nano:

    $ nano homefiles.sh
  6. В *NIX-системах файл скрипта на любом интерпретируемом языке программирования рекомендуется начинать с последовательности #!, которая называется shebang. За этими символами указывают путь к интерпретатору, который система будет использовать для исполнения скрипта. Без строки shebang скрипт может выполняться не совсем так, как задумано, если оболочка по умолчанию — не bash.

    В данном случае нужно указать в первой строке (перед ней не должно быть пустых строк) такой shebang:

    #!/bin/bash

    Обратите внимание: после символов #! должен быть указан правильный путь к интерпретатору, в нашем случае —  указанный выше в п. 2:

    /bin/bash

    Иначе будет выведено сообщение об ошибке: Command not found.

    Законченный скрипт homefiles.sh выглядит так:

    #!/bin/bash
    
    cd /home/$USER
    ls -lat >> homefiles.txt
    tail -5 homefiles.txt

    Здесь выполняются следующие действия:

          1) Перейти в домашний каталог пользователя.

          2) Отобразить список файлов в нём, упорядочив их по времени создания.

          3) Сохранить этот список в файле homefiles.txt

          4) Отобразить последние пять строк файла homefiles.txt

  7. Сохраните скрипт. В редакторе nano для этого нужно выполнить следующие действия:

           1) Нажмите Ctrl+Х, чтобы инициировать выход из программы.

           2) В ответ на вопрос: Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES)? (Сохранить изменения, сохранённые в буфере обмена? Если ответить Нет, изменения будут удалены.) нажмите клавишу Y.

           3) В ответ на предложение: File Name to Write: homefiles.sh (Сохранить файл под названием: homefiles.sh) нажмите клавишу Enter.       

  8. Чтобы скрипт можно было запустить, нужно сделать его исполняемым. 

    Для этого введите следующую команду:

    $ chmod +x homefiles.sh

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

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

  9. Для запуска скрипта введите в командной строке команду: 

    ./homefiles.sh
  10. При успешном выполнении скрипта отобразятся последние пять строк файла homefiles.txt:
Результат выполнения скрипта

Заключение

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

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!