Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Шелл для кодера

Андрей Семенюченко

Спецвыпуск: Хакер, номер #051, стр. 051-082-1


(semu@rbcmail.ru)

Программируем на BASH. Разбор реального сценария

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

Языки сценариев полезны для пользователя и просто жизненно необходимы для любого системного администратора. *nix-системы имеют множество встроенных и прикладных языков программирования. Наиболее популярными и часто используемыми из них являются Perl, Tcl, а также shell. Сейчас ты, наверное, подумал: "Ха, да ведь шелл – это же командная оболочка, являющаяся как бы посредником между человеком и системой для упрощения взаимодействия". Совершенно верно, но не только! Это еще и мощное средство программирования. Плюсы использования интерпретируемых языков программирования очевидны. Вот только некоторые из них.

1. Переносимость: ты можешь легко залить свой только что испеченный скрипт с машины, на которой установлена твоя любимая Fedore Core, на любую другую платформу под управлением скажем FreeBsd или Solaris. Главное, чтобы в системе был установлен интерпретатор для языка, на котором написан крипт.

2. Простота написания кода: нет необходимости специально обучаться сложному программированию на компилирующих языках, таких как С, С++, Pascal, Fortran. Такое программирование наиболее очевидно, поскольку программа пишется в пошаговом режиме, то есть человек принимает решение о своем следующем шаге в зависимости от реакции системы на предыдущий шаг.

3. Быстрота написания кода: благодаря простоте синтаксиса и отладки ты сэкономишь много времени.

4. Большие функциональные возможности: хотя интерпретируемые языки и нельзя сравнить по своей функциональности, например, с С, тем не менее не нужно недооценивать всей их мощи.

Программирование на shell

Давай рассмотрим программирование на shell более подробно. Поскольку у тебя на Linux определенно есть sh и, скорее всего, bash, то нет никакой необходимости устанавливать пакеты этих программ, а можно сразу же приступить к программированию. Сразу же оговорюсь: в своих экспериментах я использовал интерпретатор bash.

Нет ничего страшного, если в качестве оболочки ты используешь sh. Возможно также, что у тебя установлен Korn Shell (ksh) или что-то еще, тогда тебе нужно всего лишь придерживаться стандарта POSIX, если хочешь, чтобы твои shell-сценарии могли быть интерпретированы другим шеллом. Пройдя по ссылке www.unix.org.ua/orelly/unix/ksh/appa_02.htm, ты сможешь прочитать статью о IEEE 1003.2 POSIX shell стандарте и его поддержке в Korn shell. Дополнительные же преимущества bash опишу чуть позже.

Важно понять, что из сценариев доступны абсолютно все команды и утилиты системы, а внутренние команды shell - условные операторы, операторы циклов и др. только увеличивают мощь и гибкость сценариев.

Содержание  Вперед на стр. 051-082-2