- •И.Н.Акуленок
- •Утверждено советом университета
- •Введение
- •Глава 1. Текстовые редакторы
- •1.1. Редактор ed
- •1.1.1. Команды, не использующие адресации строк
- •1.1.2. Команды, использующие один адрес
- •1.1.3. Команды, использующие два адреса
- •1.1.4. Нумерация строк
- •1.1.5. Примеры использования команд
- •1.2. Редактор VI и ex
- •1.2.1. Редактирование нескольких файлов
- •1.2.2. Вставка текста из одного файла в другой
- •1.3. Потоковый редактор sed
- •1.4. Контрольные вопросы
- •Глава 2. Командные процессоры ос unix
- •2.1. Типы командных процессоров
- •2.2. Идентификация и смена оболочки
- •2.3. Запуск shell и стартовых shell–файлов
- •2.4. Установка переменных среды
- •2.5. Псевдонимы команд
- •2.6. Выполнение .Profile после его изменения
- •2.7. Контрольные вопросы
- •Глава 3. Интерпретатор shell
- •3.1. Shell–переменные
- •3.1.1. Задание значений переменных и их отмена
- •3.1.2. Экспорт переменных
- •3.2. Специальные символы
- •3.2.1. Использование двойных кавычек и апострофа
- •3.2.2. Обратные апострофы
- •3.2.3. Обратная наклонная черта
- •3.3. Позиционные переменные
- •3.4. Код завершения процесса
- •3.5. Конвейеры и списки
- •3.6. Композиции команд
- •3.5.1. Порожденный shell – оператор круглые скобки ( )
- •3.5.2. Оператор списка – фигурные скобки {}
- •3.6. Контрольные вопросы
- •Глава 4. Программные структуры
- •4.1. Команда test
- •4.1.1. Условия проверки файлов
- •4.1.2. Условия проверки строк
- •4.1.3. Условия сравнения целых чисел
- •4.1.4. Сложные условия
- •4.2. Команда expr
- •4.3. Команда read
- •4.4.Условный оператор if
- •4.5. Оператор цикла for
- •4.6. Операторы цикла while и until
- •4.7. Оператор вызова case
- •4.8. Функции в shell
- •4.9. Контрольные вопросы
- •5. Создание сценария командного процессора
- •5.1. Пример простейшего сценария
- •5.2. Основные этапы разработки сценария
- •5.3. Отладка командных процедур
- •5.4. Выполнение shell–программ
- •5.5. Создание новых команд
- •5.6. Контрольные вопросы
- •Список литературы
- •Оглавление
- •Акуленок Ирина Николаевна
2.1. Типы командных процессоров
Существует несколько широко распространенных командных процессоров и еще несколько малораспространенных, специфичных для конкретных версий UNIX.
Все разговоры об оболочках сводятся к тому, что существуют оболочки, имеющие много общего с оболочкой Bourne, и оболочки, имеющие много общего с С–оболочкой. Вопрос состоит в том, какие оболочки есть в вашей системе? И с какой оболочкой вы хотели бы работать?
Рассмотрим список имеющихся командных процессоров с кратким описанием их лучших возможностей.
sh–ОболочкаBourneнаписана Стефаном Борном (StephenBourne) вBellLaboratoriesфирмыAT&T– там, где разрабатывалась сама ОСUNIX. С тех пор многие поставщики компьютеров, создавая собственные платформенно–ориентированые версииUNIX, сохранили совместимость с основными элементами оболочкиBourne.
csh– C–оболочкаимеет управление заданиями (+) и псевдонимы с аргументами (+). Это разработка Билла Джоя (Bill Joy– автор текстового редактораvi) в Калифорнийском университете. В качестве модели синтаксиса Б. Джой выбрал язык программированияСи. Команды оболочкиСии операторы структурного программирования – близки по синтаксису эквивалентным операторамСи. Поэтому она называется С–оболочкой.
Управление заданиями(job control) – это возможность выполнять задание в фоновом режиме без специальных команд.
Псевдоним(alias) – это другое имя для команды.
ksh–ОболочкаKornимеет управление заданиями (+) и псевдонимы без аргументов (–).
Оболочка Kornназвана по имени ее автора Дэвида Г. Корна (David G. Korn), работающего вBellLaboratoriesфирмыAT&T. Он написал первую версию программы в 1986 г. Таким образом, оболочкаKornявляется прямой наследницей оболочкиBourne. Она почти полностью совместима с оболочкойBourne: практически любой сценарий оболочки, написанный для оболочкиBourne, может быть корректно выполнен оболочкой Korn. Однако сценарии оболочкиKorn, как правило, не могут корректно обрабатываться оболочкойBourne.
Перечень усовершенствований, имеющихся в оболочке Korn, весьма обширен: от тривиальных до весьма существенных. Наиболее серьезные улучшения связаны с упрощением клавиатурного взаимодействия с оболочкой, значительно расширен синтаксис и технология программирования оболочки.
Усовершенствования можно разделить на следующие категории:
Псевдонимы команд.Псевдонимы позволяют сокращать часто используемые команды, не обращаясь к программированию оболочки, тем самым повышая общую производительность при работе с клавиатурой.
История команд.Механизм истории команд можно использовать сам по себе или в сочетании с редактированием для изменения и повторного использования ранее введенных команд. Историю команд можно также использовать в качестве журнала, регистрирующего все действия на клавиатуре.
Редактирование команд. ОболочкаKornобеспечивает два стиля редактирования команд, которые предоставляют возможность просматривать и корректировать команды в процессе их ввода. Редактирование команд может значительно уменьшить время, затрачиваемое на повторный ввод команд.
Управление каталогами. ОболочкаKornобеспечивает расширения командыcd, новый синтаксис записи путей и новые переменные оболочки, способствующие упрощению перехода между каталогами и сокращению длинных имен путей.
Арифметические выражения. ОболочкаKornобладает встроенными возможностями выполнения арифметических операций, обработки строк и массивов.
Улучшение синтаксиса. ОболочкаKornпредоставляет усовершенствования синтаксиса оператораif, встроенной командыtestи выражений подстановки команд, которые расширяют возможности и улучшают удобочитаемость сценариев оболочки.
Шаблоны. ОболочкаKornподдерживает большее число форматов шаблонов, что снижает объем работы с клавиатурой.
Последовательная обработка. Привычный канал оболочкиBourneрасширен для обеспечения более гибкого программного взаимодействия между сценарием оболочки и вызываемыми командами.
Выполнение заданий. ОболочкаKornвключает в себя свойства мониторинга пакетных заданий, упрощающих выполнение процессов в фоновом режиме и предоставляющих возможность одновременного выполнения большего числа заданий.
Многие свойства оболочки Kornдублируют свойства оболочкиС, но с другим синтаксисом. Это сделано умышленно. Хотя оболочка С предоставляет множество необходимых свойств, ее общий синтаксис несовместим с оболочкойBourne, что делает эту оболочку несколько выпадающей из общего стиляUNIX. ОболочкаKornразрешает это долго существовавшее противоречие с миреUNIX, предоставляя требуемые свойства клавиатуры и программирования оболочки, но в форме, совместимой со старым, хорошо проработанным стандартом оболочкиBourne.
bash –оболочкаBourne–Againимеет много возможностей, аналогичных возможностям оболочкиKorn. Ее можно встретить в некоторых разновидностях UNIX, таких как LINUX. Это новая комбинация стиля программирования оболочкиBourneи возможностейС–оболочки, предоставляется бесплатно.
tcsh–расширениеcsh, совместимое с ним по командам, макроопределениям и синтаксисуязыка скриптов.tcshбыл написан в конце 1970–х годов Кеном Гриром (KenGreer). Он начал работу надtcshв Университете Карнеги–Мелон (Carnegie–Mellon University), а продолжил ее Пол Плэйсвэй (PaulPlaceway) в восьмидесятые годы в Университете Огайо (OhioState). Основные отличияtcshотcshсводятся к усовершенствованиюредактированиякомандной строкии ряду дополнений в помощь создателям скриптов (например, переменныесреды окружения, доступные только для чтения).
Завершение имени файла(file name completion) – это способность оболочки угадывать вводимое имя файла по нескольким первым буквам.
Каждый командный процессор имеет свои преимущества и свои недостатки. Нельзя сказать ни об одном, что он лучше другого. Для различных приложений можно выбрать наиболее подходящий shell. Обычно работают с одним, максимум с двумя командными процессорами.
Какую бы оболочку вы ни выбрали, все они имеют одно и то же назначение – предоставить пользователю интерфейс к UNIX.
В Solaris по умолчанию устанавливаются несколько командных процессоров, в том числе sh,csh,tcsh,bashи другие; командным процессором по умолчанию являетсяsh.