Shell как средство изготовления прототипов
Всякий раз, когда Вы входите в ОС UNIX, Вы используете shell. Shell - это интерактивный интерпретатор команд, позволяющий взаимодействовать с ядром ОС UNIX. Но это лишь одно из применений shell'а. Shell может быть использован как язык программирования. Программы на этом языке в дальнейшем будут называться shell-процедурами. Shell-процедуры могут иметь разветвленную структуру, из них можно запускать процессы. В языке имеются средства для обработки исключительных ситуаций, а также для переназначения ввода и вывода. Таким образом, shell является полноценным языком программирования.
Одним из достоинств shell'а является возможность организации так называемых конвейеров - цепочек команд, которые будут выполняться одна за другой таким образом, что вывод предыдущей команды является вводом следующей. В конвейерах может использоваться большинство команд, описанных в Справочнике пользователя, поэтому время, затраченное Вами на изучение Справочника пользователя, безусловно окупится. Просмотрите этот Справочник, и, возможно, Вы найдете команду, которая, будучи употребленной с нужными опциями, решит трудную программистскую проблему. Чем больше команд станет Вам известно, тем в большей степени Вы сможете воспользоваться возможностями ОС UNIX.
В данный момент мы не будем заниматься обучением программированию на shell'е. Подчеркнем лишь ту важную роль, которую может играть shell при разработке макетных образцов крупномасштабного программного обеспечения. Действительно, несмотря на то, что изучение shell'а со всеми его нюансами является достаточно сложной задачей, на получение shell-программ требуется гораздо меньше времени, чем на разработку программ на обычных языках высокого уровня.
Благодаря возможности быстрого получения работающих программ, shell является мощным инструментом при разработке программного обеспечения. Применение shell'а позволяет использовать труд других в максимальной степени, так как при программировании на shell'е можно легко и эффективно комбинировать различные компоненты. На shell'е часто удается запрограммировать даже большие прикладные программные системы. Даже если такое программирование выполняется с целью получения макетного образца программной системы, предназначенного лишь для проверки ее целей, могут быть сэкономлены многие месяцы работы. Действительно, имея такой макетный образец, можно определить диапазон возможных пользовательских ошибок, что не всегда легко проделать на стадии проектирования программной системы. Кроме того, макет позволяет отработать реакцию системы при некорректном вводе пользователя. Таким образом, можно избежать большого объема работ по исправлению ошибок, возникших на стадии проектирования разрабатываемой программной системы.
В заключении заметим, что из shell-процедур можно обращаться как к программам, написанным на обычных языках программирования, так и к стандартным командам ОС UNIX. Это удобно, так как часто с помощью имеющихся инструментов можно выполнить какие-либо действия, записав всего пару строк вместо полуторастраничной программы на каком-либо языке.