Уважаемые подписчики!
Это седьмой, предпоследний выпуск из серии, посвященной командному
интерпретатору ksh. Перевод, по сложившейся традиции, сделан
по справочному руководству ОС Solaris 8. Через неделю представлю
вам окончательный вариант, со всеми перекрестными ссылками.
И еще. Если кто-то очень хочет послушать "живьем" что-нибудь по тематике моих рассылок (UNIX, Oracle, Informix) в исполнении вот такого товарища
то не стесняйтесь, обращайтесь. Я готов проводить полуторачасовые семинары в Киеве в любой аудитории в любой день недели (это пока, до конца марта - потом могут появиться ограничения). Если мне покажется интересной тема, я с удовольствием выступлю в Киеве бесплатно. Если будет что сказать и показать, конечно... Предложения от жителей областных центров Украины и ближайшего зарубежья тоже принимаются. Вобщем, жду ваших писем на эту тему.
Продолжается описание специальных команд...
"[%d]%c %s%s\n", <номер_задания>, <текущее>, <статус>, <имя_задания>где поля имеют следующие значения:
Когда командный интерпретатор уведомляет пользователя о том, что задание завершено, он может удалить идентификатор процесса задания из своего списка известных в текущей среде выполнения. По умолчанию асинхронное уведомление не будет включено.
Использование + вместо - вызывает выключение этих флагов. Перечисленные флаги можно также указывать при вызове порожденного командного интерпретатора. Текущий набор флагов можно найти в $-. Если не установлен флаг -A, остальные аргументы считаются позиционными параметрами и присваиваются, последовательно, $1, $2...
Если указан аргумент -, командный интерпретатор сбросит обработчик каждого сигнала в стандартное значение. Если аргумент пустой (''), командный интерпретатор будет игнорировать все указанные сигналы при их получении. В противном случае, аргумент будет читаться и выполняться командным интерпретатором при получении одного из соответствующих сигналов. Указанное в команде trap действие (обработчик) будет переопределять предыдущее действие (будь-то стандартное или явно установленное). После завершения действия значение $? будет таким же, как и перед вызовом обработчика.
В качестве сигнала можно указывать EXIT, 0 (эквивалентно EXIT) или имя сигнала без префикса SIG, например, HUP, INT, QUIT, TERM. Если сигнал имеет значение 0 или EXIT и команда trap выполняется в теле функции, то команда аргумент выполняется после завершения функции. Если указан сигнал 0 или EXIT в команде trap вне функции, команда аргумент выполняется при выходе из командного интерпретатора. Если указан сигнал ERR, аргумент будет выполняться каждый раз, когда какая-то команда завершится с ненулевым статусом выхода. Если указан сигнал DEBUG, аргумент будет выполняться после каждой команды.
Среда, в которой командный интерпретатор выполняет обработчик сигнала EXIT, будет идентичной среде сразу после выполнения последней команды и до срабатывания обработчика сигнала EXIT.
При каждом вызове обработчика аргумент будет обрабатываться как в команде:
eval "$аргумент"
Сигналы, игнорировавшиеся при входе в неинтерактивный командный интерпретатор, не могут быть перехвачены или переустановлены, хотя при попытке сделать это никакое сообщение об ошибке выдавать не нужно. Интерактивный командный интерпретатор может переустанавливать или перехватывать сигналы, игнорируемые при входе. Обработчики будут действовать в данном командном интерпретаторе, пока не будут явно изменены другой командой trap.
При входе в порожденный командный интерпретатор обработчики устанавливаются в стандартные значения. Это не означает, что команду trap нельзя использовать в порожденном командном интерпретаторе для установки новых обработчиков.
Команда trap без аргументов будет выдавать в стандартный выходной поток список команд, ассоциированных с каждым сигналом. При этом используется следующий формат:
trap -- %s %s... <аргумент>, <сигнал>...
Командный интерпретатор будет форматировать результат, включая правильную расстановку кавычек, так, что он подходит для повторного ввода в командном интерпретаторе в качестве команд, задающих те же перехватчики. Например:
save_traps=$(trap) ... eval "$save_traps"
Если указанное имя или номер сигнала недопустимы, будет возвращен ненулевой статус выхода; иначе возвращается 0. Как для интерактивных, так и для неинтерактивных командных интерпретаторов недопустимые имена или номера сигналов не считаются синтаксической ошибкой и не вызовут аварийного прекращения работы командного интерпретатора.
Обработчики не выполняются, пока задание ждет завершения приоритетного процесса. Таким образом, обработчик сигнала CHLD не будет выполнен, пока не завершится работа приоритетного задания.
Атрибут -i нельзя задавать вместе с -R, -L, -Z, или -f.
Использование + вместо - вызывает сброс этих флагов. Если имена не заданы, но флаги есть, выдается список имен переменных (и, опционально, их значений), для которых эти флаги установлены. (Использование + вместо - не позволяет выдавать значения.) Если не заданы ни имена, ни флаги, выдаются имена и атрибуты всех переменных.
В этом случае выдается мягкое ограничение, если явно не указана опция H. Если указано более одного ресурса, то перед каждым значением выдается имя и единица измерения.
Если опции не указаны, предполагается опция -f.
Флаг -v выдает более подробный отчет.
Флаг -p требует искать указанное имя по путям, даже если это имя является псевдонимом, функцией или зарезервированным словом.Copyleft (no c) 2005 В. Кравчук, OpenXS Initiative, перевод на русский язык
Завершающая часть перевода страницы справочного руководства ksh(1). Далее по плану долгой и счастливой жизни рассылки - перевод man smb.conf(5). А еще мне нравится идея перевести страницу справочного руководства по командному интерпретатору zsh. Чтобы достойно завершить свои труды по распространению информации о shell-ах среди широких народных масс.
С наилучшими пожеланиями,
В.К.
|
|
Украинская Баннерная Сеть |