Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1320 / 264 | Оценка: 4.34 / 3.65 | Длительность: 21:13:00
Лекция 12:

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

< Лекция 11 || Лекция 12: 123456

Установка приглашения shell

Командный интерпретатор имеет несколько вариантов приглашений на разные случаи жизни.

По умолчанию в sh – это $, в csh%. Привилегированный пользователь (root) имеет другое приглашение – #.

В среде окружения каждого командного процессора есть переменные PS1 и PS2. Это – вид обычного приглашения и приглашения к продолжению ввода команды соответственно.

При вводе длинной команды можно набрать ее в две строки, для этого следует в конце первой строки набрать символ обратного слэша и нажать Enter – вот так:

\<Enter>

и продолжить ввод на следующей строке. Команда может быть и еще более многострочной; как правило, допустимая длина команды составляет 1024 символа. Обратный слэш экранирует следующий за ним символ перевода строки от интерпретации в качестве символа завершения команды. При переходе к новой строке появится символ >, так как именно это значение по умолчанию имеет PS2.

В csh и tcsh вместо PS1 и PS2 определены переменные prompt и prompt2. Некоторые командные процессоры, в частности, ksh, имеют дополнительные приглашения для специальных случаев. Они хранятся в переменных PS3, PS4 и т.д., а в csh – в prompt3 и prompt4.

Многие реализации командных процессоров (прежде всего, bash ) умеет показывать приглашения, включающие в себя динамически подставляемые части (например, имя текущего каталога). В этих командных процессорах есть свои собственные макроопределения для таких подстановок. Например, имя текущего каталога в bash подставляется в приглашение командной строки с помощью макроса \w, а в csh%/. Помните, что назначать желаемое значение переменной можно, только указывая макрос внутри апострофов, чтобы экранировать его от интерпретации командным процессором, например, в bash:

$PS1='\w$'

Перечень макроопределений для приглашений командной строки обычно содержится в руководстве man по командному интерпретатору.

Перечень спецсимволов

Как вы уже знаете, все командные процессоры воспринимают некоторые символы как служебные, придавая им специальное значение при разборе командной строки. Выше рассматривались спецсимволы, связанные с указанием конкретных конструкций. Уже было показано, что многие служебные символы интерпретируются разными командными процессорами одинаково, хотя некоторые – по-разному. Основные спецсимволы приведены в табл. 12.8.

Таблица 12.8. Специальные символы shell'ов
Командный процессор Основные спецсимволы
sh $ * ? \ ` ' " [ ] < > &
csh $ * ? \ ` ' " ! ^ { } [ ] ! % < > &
ksh $ * ? \ ` ' " ! ^ { } [ ] ! < > &
bash $ * ? \ ` ' " ! ^ { } [ ] ! % < > &

Для ввода специальных символов без учета их специального смысла (например, для вычисления произведения двух чисел выполняется команда expr 2 \* 2, надо передать программе expr просто звездочку, не расшифровывая ее специальное значение для командного процессора) в командной строке предваряйте их символом экранирования \ либо заключайте в кавычки или апострофы. Кавычки отличаются от апострофов тем, что экранируют от интерпретации все специальные символы, за исключением `, $ и \, а апострофы экранируют абсолютно все специальные символы.

Разбор командной строки

Каждый командный процессор выполняет разбор командной строки строго в следующем порядке:

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

Кэширование имен выполняемых файлов

Командные процессоры csh и tcsh кэшируют в сразу после начала работы список выполняемых файлов из каталогов, указанных в переменной path, поэтому при изменении значения этой переменной или при добавлении новых исполняемых файлов в указанные в ней каталоги следует выполнять команду rehash, чтобы командный процессор обнаружил новые каталоги и команды. Без этой команды новые программы будут недоступны, их придется вызывать по полному имени файла.

< Лекция 11 || Лекция 12: 123456
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.