Администрируем Linux: скрипты

Unix Shell и все-все-все.
06 апреля 2017326451Илья Бубнов4231016

Большинство офисов в России и мире работает под управлением операционной системе Windows, соответственно от системного администратора куда чаще требуются знание оконных инструментов. Но есть и те, кто предпочитает бесплатный дистрибутив, отсутствие «детских» проблем и высокую производительность. Об одном из главных инструментов для системного администратора Linux — командной оболочке Unix shell и её эволюции в bash поговорим далее.

Bash, Ash и Dash

Unix shell впервые появилась в 1977 году в интерпретации Стивена Борна. Это был достаточно сырой продукт, тем не менее ставший стандартом на долгие 10 лет. Сегодня в Linux используется его куда более совершенный наследник — bash (название расшифровывается как «Bourne(born)-again-shell»). Bash вобрал в себя всё лучшее, что происходило в модификациях исходной оболочки, среди которых Korn shell и C shell. 

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

Но прежде, чем мы перейдем к базовым принципам синтаксиса, стоит упомянуть и другие командные оболочки Unix. Уже упомянутый C shell хоть и дожил до наших дней в составе FreeBSD и OpenBSD, никаких существенных преимуществ по сравнению с вариантов 1978 года, кроме Си-образия, не имеет. Dash — схожее с bash решение, но более легковесное и малофункциональные, что делает его привлекательным для компактных машин. Меньше dash есть только ash, в состав которого входят всего 24 команды и 10 опций командной строки. 

Основы скриптостроения

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

Поможет оператору в этом так называемый shebang, или просто сочетание символов #!. Данную конструкцию необходимо записывать первой же строкой, указав интерпретатор. В нашем случае это bash, соответственно вид её будет примерно такой:

#!/bin/bash

А вот уже дальше можно смело писать скрипт. В целом, вид кода на bash очень похож на Си. Вот взгляните на простой скрипт с циклом вывода названий:

#!/bin/bash

for x in one two three four
do
   echo "number $x"
done

Результатам станем поочерёдный вывод “number one”...“number four”. Или ещё более привычная запись цикла:

for (( i = 0; i < 10; i++ ))
do
echo -n "$i; "
done

Кроме работы с файлами и командами, к вашим услугам немного арифметики, надо лишь заключить выражение в конструкцию $(( )). Например:

echo $(( 100 / 3 ))

Ещё здесь есть задержки (wait), прерывания (break), переключатели (case), функции, гибкие конструкции и много интересного.

Почитать

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

Advanced Bash Scripting Guide — отличная возможность стать экспертом начав с самого нуля. Еще одно отличное обучающее чтиво, правда в этот раз без перевода на русский язык — O’Reilly Bash Cookbook. Если эти книги прочитаны, то обязательно обзаведитесь карманным справочником за авторством  Скотта Граннемана «Linux Phrasebook». Книга, кстати, есть и на русском языке, но это поубавит у вас традиционной линуксовой хардкорности.

Из интернет-ресурсов традиционно посетите хабр. Данная «обучалка» может и не идеально структурирована, зато за две относительно сжатые статьи вы познакомитесь со всеми основными командами и действиями. Есть и другие варианты, например на портале linuxgeeks тоже можно найти массу полезной информации.

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

linuxbashsys_admin
Нашли ошибку в тексте? Напишите нам.