Книга: Операционная система UNIX
Команды, функции и программы
Команды, функции и программы
Все команды, которые вводятся в строке приглашения shell, относятся к одной из следующих категорий:
? встроенные функции
? функции shell, определенные пользователем
? внешние программы и утилиты
Непосредственное отношение к shell имеют только первые две категории, а программы и утилиты являются обычными исполняемыми файлами.
Запуск встроенной функции не требует порождения нового процесса, поскольку эта функция реализована в самой программе shell (например, /bin/sh). Соответственно, встроенные функции shell выполняются быстрее всего. Рассмотрим важнейшие встроенные функции shell.
: |
Пустая команда. Код возврата всегда 0 (успех). Пустая команда удобна для создания бесконечных циклов, например: while : do ... done |
. runme |
Текущий командный интерпретатор выполняет команды, указанные в файле runme. При этом не происходит порождения нового shell, как в случае запуска на выполнение runme. Например, использование в скрипте команды . /usr/bin/include_script выполнит команды файла include_script, как если бы они являлись частью текущего скрипта. |
break [n] |
Производит выход из цикла for или while . Если параметр n указан, происходит выход из n вложенных циклов ps -ef | awk '{ print $1 " " $2}' | while read uid pid do if [$pid -eq $PID] then echo pid=$pid user=$uid break fi done |
cd [dir] |
Осуществляет переход в каталог dir . Если параметр не указан, происходит переход в домашний каталог ($HOME) |
echo [string] |
Строка string выводится на стандартное устройство вывода (терминал) |
exec runme |
Выполняет программу runme , заменяя ею текущий командный интерпретатор. Например, если в login shell (командном интерпретаторе, запускаемом при регистрации пользователя в системе) мы вызовем exec ls, то после вывода имен файлов текущего каталога произойдет завершение работы в системе |
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`
}
- Другие программы
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Аргументы функции в Python
- 3. Функции
- Новые функции API для работы с Blob и массивами
- 1.2.5. Пример программы
- 24.7. Использование программы-твикера
- Математические функции
- Команды и формирование культуры по инициативе сверху
- Размытые функции
- 7.3. Финансовые функции