Европейский Университет в Санкт-Петербурге
Опубликован: 10.10.2005 | Доступ: свободный | Студентов: 1716 / 298 | Оценка: 4.30 / 3.85 | Длительность: 16:22:00
ISBN: 978-5-94774-820-8
Лекция 10:

Командные процессоры

< Лекция 9 || Лекция 10: 123456789
Аннотация: Лекция рассказывает о командных процессорах. Рассматриваются использующиеся в разных системах командные интерпретаторы, в том числе и самый удобный из них - bash, присутствующий в Solaris 9 в стандартной поставке системы.
Ключевые слова: пользователь, CDE, меню, командная строка, интерпретация, синтаксический анализ, имя программы, спецсимвол, Unix, программа, командный процессор, shell, интерпретатор команд, ksh, Bell Laboratories, ПО, csh, Си, bash, GNU, SUN, BSD, язык скриптов, State, редактирование, среда окружения, перенаправление потока, задание, редактирование командной строки, запуск, login, файл, ключ, алгоритм, список, история команд, диск, public domain, браузер, пароль, доступ, значение, команда, псевдоним, синтаксис, ключ команды, переменная, операции, unset, права, прикладная программа, скрипт, symbolic link, шаблон, функция, пробел, место, BAK, e-wallet, цикла, входной, поток, подстановка результатов, completion, tab, курсор, backspace, запись, Command, NOT, обратный, PID, домашний каталог, интерактивный режим, foreground, SUSPEND, background, ссылка, программное обеспечение, управляющий комментарий, путь, pppd, длина, макроопределения, макрос

Семейство командных процессоров

При интерактивной работе с системой пользователь постоянно сталкивается с необходимостью отдавать ей команды. В CDE это можно делать, выбирая мышью требуемые пункты меню. В текстовом окне или текстовом режиме команды набираются вручную в командной строке. После нажатия Enter производится интерпретация и синтаксический анализ команды (то есть определяется, где - имя программы, где - ключи, где - аргументы, где - спецсимволы ). Затем будут запущены один или несколько процессов.

В UNIX эту работу выполняет программа, которая называется командным процессором ( shell ). Иногда командный процессор называют шеллом или интерпретатором команд (последнее неточно, потому что круг задач командного процессора шире, чем интерпретация команд).

Существует несколько широко распространенных командных процессоров и еще несколько малораспространенных, специфичных для конкретных вариантов UNIX. В Solaris принято использовать ksh, csh или bash.

Первый в мире UNIX командный интерпретатор в 1976 году написал Стив Баурн (Steve Bourne), когда он работал в Bell Laboratories в AT&T. По другим данным, Стив написал его в 1974 году. Через некоторое время в University of California Berkeley был написан C-shell (csh, произносится "си шелл"), а потом число разных командных процессоров стало быстро расти. Самые популярные из них сейчас - это Bourne again shell (bash), разработанный в рамках проекта GNU, и Korn shell (ksh) Дэвида Корна (David Korn).

С-shell был разработан студентом Университета в Беркли (University of California Berkeley) Биллом Джоем (Bill Joy), который по окончании Berkeley основал компанию Sun Microsystems. Еще Билл Джой написал самый известный в UNIX редактор vi и был одним из авторов первой версии BSD UNIX.

Таблица 10.1. Популярные командные процессоры в UNIX
Название Имя в системе Плюсы Минусы
Bourne Shell sh обладает легким и удобным языком скриптов, прост и понятен мало средств редактирования введенных ранее команд, нет возможности управления заданиями
C Shell csh есть управление заданиями и приемлемое редактирование введенных ранее команд сложный язык скриптов, некоторые версии содержат много ошибок
Korn Shell ksh совместим с sh по командам и содержит ряд возможностей csh, имеет средства редактирования команд, введенных ранее (history) редактировать команды неудобно, язык скриптов так развит, что все трудно запомнить
Bourne Again Shell bash похож на ksh по возможностям, имеет легкий удобный интерфейс, простое интуитивно ясное редактирование введенных ранее команд, стандарт де-факто в Linux, в Solaris 9 устанавливается по умолчанию, но не является командным процессором по умолчанию пока не обнаружено

В конце 1970-х годов был написан tcsh - расширение csh, совместимое с ним по командам, макроопределениям и синтаксису языка скриптов. Кен Грир (Ken Greer) начал работу над tcsh в Университете Карнеги-Мелон (Carnegie-Mellon University), а продолжил ее Пол Плэйсвэй (Paul Placeway) в восьмидесятые годы в Университете Огайо (Ohio State). Основные отличия tcsh от csh сводятся к усовершенствованию редактирования командной строки и ряду дополнений в помощь создателям скриптов (например, переменные среды окружения, доступные только для чтения). В последних версиях UNIX csh обычно является символической ссылкой на tcsh, а оригинальный csh в поставку не включается, чтобы не шокировать пользователей пещерным уровнем редактирования командной строки.

В Solaris по умолчанию устанавливаются несколько командных процессоров, в том числе sh, csh, tcsh, bash и другие; командным процессором по умолчанию является sh.

Командный процессор призван выполнять в системе нижеперечисленные задачи:

  • интерпретация команд пользователя, в том числе разбор командной строки ;
  • запуск программ;
  • организация перенаправлений потоков между процессами;
  • интерпретация языка скриптов и их выполнение;
  • управление заданиями ;
  • интерпретация шаблонов имен файлов;
  • подстановка имен файлов в командную строку.

Некоторые командные процессоры поддерживают не все эти функции (см. табл. 10.2).

Таблица 10.2. Основные задачи shell'ов
Функция sh csh tcsh ksh bash
History Нет Да Да Да Да
Псевдонимы Нет Да Да Да Да
Скрипты Да Да Да Да Да
Подстановка и завершение имен файлов Нет Да* Да Да* Да
Редактирование командной строки Нет Да Да Да* Да
Управление заданиями Нет Да Да Да Да

* - по умолчанию выключено

< Лекция 9 || Лекция 10: 123456789