3.10 Для чего нужно программировать на языке shell!

3.10 Для чего нужно программировать на языке shell!

Программа shell системы UNIX не относится к типичным интерпретаторам команд, хотя и дает возможность запускать команды обычным способом. Тем не менее это язык программирования, который позволяет достичь большего. Имеет смысл сделать ретроспективный обзор данной главы, поскольку здесь приведен довольно обширный материал, и, кроме того (что является главной причиной), мы обещали вам обсудить "средства общего пользования", а затем увлеклись примерами программирования на языке shell. Дело в том, что используя язык shell, вы все время пишите маленькие, практически однострочные программы, в частности конвейер — это программа, равноценная фразе "Чай готов". Однако вы выполняете свою работу так легко и естественно (если умеете), что даже не считаете ее программированием.

Интерпретатор дает вам такие средства, как циклы, переключение ввода-вывода с помощью < и >, порождение имен файлов с помощью *, причем применение этих средств единообразно во всех программах. Некоторые средства, например командные файлы и программные каналы, на самом деле обеспечиваются ядром, но язык shell предоставляет естественную запись для их создания. Они не только удобны, но и увеличивают мощность системы в целом.

Базой для интерпретатора служит ядро системы UNIX, например, хотя интерпретатор и определяет конвейеры, именно ядро осуществляет передачу данных по ним. Способ, которым система обрабатывает выполняемые файлы, позволяет программировать командные файлы так, чтобы они выполнялись подобно оттранслированным программам. Пользователь не должен думать о том, что это командные файлы, — для передачи их на выполнение не требуется специальная команда типа RUN. Сам интерпретатор является программой, а не частью ядра. Его можно настраивать, расширять и обращаться с ним, как с любой другой программой. Такой подход не является уникальным, но здесь он реализован полнее, чем где бы то ни было.

В гл. 5 мы вернемся к теме программирования на языке shell, а пока запомните: вне зависимости от того, как вы работаете с интерпретатором, вы программируете на его языке (чем в основном и объясняются его достоинства).

Историческая и библиографическая справка

На языке интерпретатора программируют с незапамятных времен. Сперва были отдельные команды для if, goto и меток, а команда goto выполнялась путем просмотра входного файла от его начала до нужной метки. (Поскольку невозможно читать заново через программный канал, нельзя было и передавать по программному каналу в командный файл, использующий структуры управления.)

Седьмая версия интерпретатора была создана С. Боурном, которому оказал помощь и идейную поддержку Д. Мэшей. Как вы увидите в гл. 5, здесь есть все необходимое для программирования. Кроме того, реорганизована работа с входным и выходным потоками: теперь можно без ограничения переключать ввод-вывод из командных файлов и в них. Неотъемлемым свойством интерпретатора является обработка метасимволов в именах файлов; в ранних версиях, которые остались лишь на очень маленьких машинах, она реализовывалась отдельной программой.

Другой вариант интерпретатора, с которым вы могли встречаться (а может быть, вы предпочитаете с ним работать) — csh, так называемый Си-shell, созданный Б. Джоем на базе интерпретатора шестой версии. По сравнению с интерпретатором Боурна этот интерпретатор лучше обеспечивает диалог. Он предоставляет средство "история", позволяющее повторять в сокращенной записи (возможно, с небольшим редактированием) предварительно введенные команды. Отличается также и синтаксис команд интерпретатора Джоя. Но, поскольку Си-shell, базируется на интерпретаторе ранней версии, в нем содержится меньше средств для программирования; это скорее диалоговый интерпретатор команд, чем язык программирования. В частности, исключена передача по программному каналу из (или в) командного файла со структурами управления.

Команда pick предложена Т. Даффом, а команда bundle — независимо А. Хьитом и Д. Гослингом.

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Похожие главы из других книг:

3.3. Пакеты в языке UML

Из книги автора

3.3. Пакеты в языке UML Пакет – основной способ организации элементов модели в языке UML. Каждый пакет владеет всеми своими элементами, т. е. теми элементами, которые включены в него. Про соответствующие элементы пакета говорят, что они принадлежат пакету или входят в него. При


Наконец, Z-Shell

Из книги автора

Наконец, Z-Shell Как известно, Z – последняя буква латинского алфавита. И её наличие в имени следующего нашего персонажа, Z-Shell (или просто zsh) призвано символизировать то, что эта оболочка представляет собой последнюю ступень в развитии командных оболочек вообще. Хотя на самом


Глава 5 Программирование на языке shell

Из книги автора

Глава 5 Программирование на языке shell Большинство пользователей считают, что shell представляет собой диалоговый интерпретатор команд. На самом же деле это язык программирования, в котором каждый оператор инициирует запуск команды. Язык shell может показаться вам несколько


Zsh как login shell

Из книги автора

Zsh как login shell В Mint в качестве системной командной оболочки, то есть интерпретатора общесистемных сценариев, выступает Dash (Debian-клон оболочки Альмквиста, ash), лёгкая и компактная, но имеющая слабые возможности для интерактивной работы. Для последней, как и в подавляющем


Spb Mobile Shell

Из книги автора

Spb Mobile Shell Страница программы: http://www.spbsoftwarehouse.comСтатус: Shareware, $17Казалось бы, выпустив Pocket Plus, компания Spb Software может спокойно закрыть тему изменялок интерфейса и заняться чем-нибудь другим. Ничуть не бывало – на свет появился еще более радикальный продукт, который не


23.3. Команды shell

Из книги автора

23.3. Команды shell Shell-команды – это системные команды, с помощью которых можно быстро запускать разные объекты или выполнять над ними различные действия.Выполнение shell-команд можно производить любым доступным способом, но чаще всего для этого используется строка поиска в


17.5.1.3. Переносимость shell

Из книги автора

17.5.1.3. Переносимость shell Переносимость shell-сценариев, к сожалению, является низкой. Проблема заключается не в самой оболочке; bash(1) (Bourne Again shell с открытым исходным кодом) распространена достаточно широко, для того чтобы малоразвитые shell-сценарии могли выполняться почти в


Почему плохо использовать MFC Как программировать и как не программировать

Из книги автора

Почему плохо использовать MFC Как программировать и как не программировать Библиотека классов MFC является вредной для программистаПеревод А. И. ЛегаловаАнглоязычный оригинал находится на сервере компании Reliable SoftwareПрограммирование для Windows считается трудным. Библиотеки


Для чего нужно сжимать изображение

Из книги автора

Для чего нужно сжимать изображение Картинка, полученная с помощью шестимегапиксельной камеры, должна занять 18 Мбайт памяти. Если изображение записывать в память в таком виде, то даже в запоминающее устройство большой емкости удастся уместить лишь несколько снимков.


Волк и Чёрная Шапочка: нужно ли спасать Науку, и если нужно, то как? Василий Щепетнёв

Из книги автора

Волк и Чёрная Шапочка: нужно ли спасать Науку, и если нужно, то как? Василий Щепетнёв Опубликовано 06 октября 2013 Найдя на дне реки Москвы глиняный кувшин, запечатанный таинственной печатью, пионер Костыльков размечтался. Вот сдаст он сегодня этот