Операционная система UNIX - страница 33
>exit [n] | Завершает работу текущего интерпретатора (или скрипта) с кодом возврата >n . По умолчанию код возврат равен 0 |
>export [name1], [name2...] | Помещает переменные, указанные в качестве аргументов, в окружение текущего shell, делая их тем самым экспортируемыми, т.е. доступными для запускаемых из интерпретатора программ |
>hash [-r] [command, command...] | Для каждой команды, указанной в качестве аргумента, запоминается полный путь. Таким образом, при последующих вызовах этих команд поиск не производится. Ключ >-r удаляет все ранее запомненные пути. Если команда hash вызвана без аргументов, то выводится информация о запомненных путях |
>jobs | Если командный интерпретатор поддерживает управление заданиями, данная команда выводит список текущих заданий. См. раздел «Система управления заданиями», далее в этой главе |
>kill [-sig] pid1 pid2... | Посылает сигнал, определённый параметром sig, процессам, указанным параметрами >pid . Параметр >pid может быть либо идентификатором процесса, либо идентификатором задания, если поддерживается управление заданиями (в этом случае идентификатор должен предваряться символом '%' в соответствии синтаксисом системы управления заданиями). См. раздел «Система управления заданиями далее в этой главе |
>pwd | Выводит имя текущего каталога |
>read var1 var2 ... | Построчно считывает слова (т.е. группы символов, разделённые пробелами) из стандартного потока ввода, последовательно присваивая переменным >var , указанным в качестве параметров значения, равные считанным словам. Если число слов в строке превышает число переменных, то последней переменной присваивается значение, равное остатку строки |
>return [n] | Осуществляет выход из функции с кодом возврата >n . По умолчанию возвращается код последней команды |
>set | При задании без параметров выводит список определённых переменных |
>shift [n] | Производит сдвиг позиционных параметров, хранящихся в $1, $2 и т.д. на >n позиций. По умолчанию сдвиг производится на одну позицию |
>test | Вычисляет условное выражение. Возвращает значение 0 — истина, или 1 — ложно. См раздел условные выражения далее в этой главе |
>times | Выводит суммарное время использования процессора программами, запущенными из текущего командного интерпретатора |
>trap command sig1 sig2 ... | Определяет команду >command , которая будет выполнена при получении сигналов, указанных в качестве аргументов >sig . См. раздел "Сигналы" ранее в этой главе |
>type name | Показывает, как >name будет интерпретироваться командным интерпретатором |
>ulimit | Выводит или устанавливает значение пределов, ограничивающих использование задачей системных ресурсов (времени процессора, памяти, дискового пространства). Ограничения будут рассматриваться в главе 2 |
>umask nnn | Устанавливает маску прав доступа для вновь создаваемых файлов равной >nnn |
>unset var1 var2 ... | Удаляет переменные, указанные в качестве аргументов, из списка определенных переменных командного интерпретатора. Некоторые переменные, например PATH, PS1, PS2, не могут быть удалены |
>wait pid | Ожидает завершения выполнения процесса с идентификатором >pid и возвращает его код возврата |
Пользователь может определить функцию командного интерпретатора и использовать ее как встроенную функцию shell. С другой стороны, функции мало отличаются от скриптов, включая синтаксис и передачу аргументов. Однако являясь частью shell, функции работают быстрее.
Синтаксис функции имеет следующий вид:
>function() {
> command1
> command2
> ...
>}
Как можно заметить, телом функции является обычный скрипт shell.
В качестве примера приведем функцию mcd, позволяющую отобразить в приглашении shell имя текущего каталога.
>mcd() {
> cd $*
> PS=`pwd`
>}
Подстановки, выполняемые командным интерпретатором
Прежде чем выполнить команду, указанную либо в командной строке, либо в скрипте, командный интерпретатор производит определенную последовательность действий:
1. Анализирует синтаксис команды. В случае, если обнаружена синтаксическая ошибка, выводится соответствующее сообщение. Естественно, shell анализирует командную строку в соответствии с синтаксисом собственного языка, а не семантику вызова конкретной команды, например, наличие тех или иных аргументов.