Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание (1114666), страница 91
Текст из файла (страница 91)
Есливыражение истинно, выполняются команды, расположенные непосредственно после then; если expr ложно, происходит выполнение команд после else (либо переход к else if иследующей проверке). Дополнительные примеры см. ранее вэтой главе (в разделе «Выражения»), а также в описанияхwhile и shift.ПримерПредпринять действия по умолчанию, если сценарий выполняется без аргументов:Встроенные команды csh и tcshif ($#argv == 0) thenecho "No filename given, Sending to Report"set outfile = Reportelseset outfile = $argv[1]endifjobs[-l]621ifjobsПеречислить все работающие или остановленные задания;включить в перечисление идентификаторы процессов, еслиуказан параметр —1.
Например, можно проверить, завершился ли уже долгий процесс компиляции или форматирования текста. Также полезно выполнять эту команду передвыходом из интерпретатора.kill [options] IDПринудительно завершить процесс или задание с указаннымидентификатором. Для принудительного завершения необходимо быть владельцем процесса или привилегированнымпользователем. Эта встроенная команда аналогична /bin/kill,описанной в главе 3 «Команды Linux», но также позволяетиспользовать символьные имена задач. «Упрямые» процессы могут быть завершены при помощи сигнала 9.Параметры-1 Перечислить имена сигналов (параметр исключает всепрочие действия).—signalНомер сигнала или его имя без префикса SIG.
Командаkill -1 позволяет получить список доступных имен сигналов. Список меняется в зависимости от архитектуры;для PC-системы он может выглядеть так:% kill -1HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URGXCPU XFSZ VTALRM PROF WINCH POLL PWR UNUSEDСигналы и их номера определены в файле /usr/include/asm/signals.h, который можно просмотреть, чтобы определить, какие сигналы доступны в системе.ПримерыПредположим, пользователь выполнил команду:killГлава 8. Интерпретаторы csh и tcsh622kill44% nroff -ms report &Принудительно завершить ее выполнение можно любым изследующих способов:45%45%45%45%45%limitkillkillkillkillkill19536XX1Jinri«?reportИдентификатор процессаТекущее заданиеЗадание с номером 1Начало строки командыПоиск по подстрокеlimit [-h] [resource [limit}]Отобразить ограничения, установленные на использованиересурсов текущим и порожденными процессами, либо установить ограничение limit.
Если ограничение не задано, отображается текущее значение для данного ресурса (resource).Если имя ресурса также опущено, отображается сводка повсем типам ресурсов. По умолчанию отображаются или устанавливаются значения мягких ограничений; если указанпараметр —h, устанавливаются жесткие ограничения. Жесткие ограничения означают конкретное пороговое значение,которое не может быть превышено. Только привилегированный пользователь может устанавливать жесткие ограничения.
См. также unlimit.Параметр—h Жесткие ограничения.РесурсыcputimeМаксимальное количество используемого процессорноговремени в секундах; может быть сокращено до ери.filesizeМаксимальный размер произвольного файла.datasizeМаксимальный размер сегмента данных (включая стек).stacksizeМаксимальный размер стека.coredumpsizeМаксимальный размер файла образа оперативной памяти.Встроенные команды csh и tcshОграничения623limitОграничение - это число, за которым может следовать символ (определитель единиц).Для ресурса cputime: rah (n часов)ram (га минут)mm:ss (минуты и секунды)Для прочих ресурсов: rak (га Кбайт, по умолчанию)ram (га Мбайт)loglogТолько для tcsh. Список пользователей, за которыми ведется наблюдение, определяется переменной watch.
Отобразитьсписок пользователей, работающих с системой в настоящиймомент. Если в качестве параметра указан символ «—», сбросить значения переменных окружения, как если бы пользователь только что зарегистрировался в системе (в новойгруппе).login [user | -р]loginДля пользователя user заменить интерпретатор по умолчанию на /bin/login.
Параметр -р указывается для сохраненияпараметров окружения.logoutlogoutЗавершить сеанс работы с интерпретатором.ls-F [options] [files]ls-FТолько для tcsh. Быстрая альтернатива Is -F. При запуске слюбыми дополнительными параметрами выполняется Is.newgrp [-] [group]Только для tcsh. Изменить идентификатор группы пользователя на указанный либо, если идентификатор не задан, наидентификатор исходной группы. Если в качестве параметра указан символ « —», сбросить значения переменных окружения, как если бы пользователь только что зарегистрировался в системе (в новой группе).newgrpГлава 8.
Интерпретаторы csh и tcsh624nicenice [±n] commandИзменить приоритет выполнения указанной команды либо,если имя команды опущено, изменить приоритет выполнения текущего интерпретатора (см. также описание командыnice в главе 3 «Команды Linux»). Диапазон приоритетов: от-20 до 20, по умолчанию принимается значение 4. Наивысший приоритет (самое быстрое выполнение) придает значение -20; значение 20 соответствует самому низкому приоритету выполнения.
Отрицательные значения приоритета может назначать только привилегированный пользователь.+п Прибавить число п к значению приоритета (понизитьприоритет задачи).—п Вычесть п из значения приоритета (повысить приоритетзадачи). Может использоваться только привилегированным пользователем.nohupnohup [command}Не посылать сигналы hangup. He завершать принудительновыполнение указанной команды после завершения работы(разрыва соединения или выхода из интерпретатора).
Использование команды без параметров внутри сценария интерпретатора предотвращает принудительное завершениесценария (см. также описание nohup в главе 3 «Команды Linux»).notifynotify [joblD]Немедленно уведомить пользователя о том, что фоновая задача завершилась (это предотвращает ситуации, в которыхпользователь, занятый, к примеру, редактированием файла,не может узнать о завершении задачи). Если не задан идентификатор задачи joblD, уведомление происходит при завершении текущей фоновой задачи.onintronintr labelonintr —onintr«On interrupt» (по прерыванию). В сценариях интерпретатора служит для обработки сигналов прерываний (аналогичнокомандам bash trap 2 и trap "" 2).
Первый вариант командыпохож на оператор goto label. При получении сигнала преры-Встроенные команды csh и tcshвания (например, Ctrl-C) сценарий переходит на метку label.Вторая форма позволяет сценарию игнорировать прерывания. Это полезно в начале сценария и при наличии сегментов команд, которые должны выполняться беспрепятственно (например, при переносе файлов). Третья форма восстанавливает обработку прерываний, которая была отключенакомандой onintr —.625onintrПримерonintr cleanupПерейти на «cleanup» no прерываниюКоманды сценарияcleanup:onintr rm -f Strop-filesexit 2Метка для прерыванийИгнорировать остальные прерыванияУдалить все созданные файлыЗавершение с кодом ошибкиpopd [options]popdУдалить текущую запись из стека каталогов или ге-ный элемент.
Номер текущей записи - 0, при отображении это самый первый элемент. См. также dirs и pushd.Параметры+пУказание га-го элемента стека.—1 Расширять символ ~.—п Переносить длинные строки.—рОтменить действие переменной интерпретатора pushdsilent, предотвращающей отображение содержимого результирующего стека.-vОтображать один каталог в строке.printenv [variable]printenvОтобразить имена и значения всех переменных окружениялибо только указанной переменной.pushd namepushd [options]pushdПервый вариант команды меняет рабочий каталог на каталог пате и добавляет его в стек каталогов.
Вторая форма про-pushd626pushdГлава 8. Интерпретаторы csh и tcshпроизводит прокрутку n-го каталога к вершине стека и делает его рабочим (нумерация начинается с 0). Команда без аргументов меняет местами два каталога на вершине стека изаменяет текущий рабочий каталог. Параметры +п, —I, —п и—V имеют такой же смысл, как и в popd. См. также dirs иpopd.Примеры% dirs/home/bob /usr% pushd /etc/etc /home/bob /usr% pushd +2/usr /etc /home/bob% pushdДобавить /etc в стек каталогов/etc /usr /home/bob% popdПереход к третьему каталогуОбменять местами два первых каталогаУдалить текущую позицию; перейти кследующей/usr /home/bobrehashrehashСоздать заново хеш-таблицу для переменной PATH. Используется, когда в текущем сеансе добавлена новая команда.Это позволяет быстрее находить и выполнять команду.
Путьк добавляемой команде (программе) следует добавить в переменнуюРАТН, прежде чем выполнять rehash. См. такжеunhash.repeatrepeat n commandВыполнить команду п раз.ПримерыРаспечатать три копии файла memo:% repeat 3 pr memo | IpПрочесть 10 строк с терминала и сохранить в файле item__list:% repeat 10 line > item_listДобавить 50 экземпляров файла шаблонов к отчету report:% repeat 50 cat template » reportВстроенные команды csh и tcshsched [options]sched time command627schedТолько для tcsh. Команда без параметров отображает всезапланированные события.
Второй вариант команды добавляет событие в расписание.Время (time) должно быть задано в формате hh:mm (например, 13:00).Параметры+hh:mmВыполнить команду через hh:mm от текущего момента.—пУдалить ге-ную запись из расписания.set variable — valueset [option] variable [n] •• : valuesetsetПрисвоить значение value переменной variable.
Если заданонесколько значений, сделать переменную указателем насписок слов. Если задан индекс п, присвоить значение valueслову переменной с номером га (переменная уже должна являться списком по меньшей мере из п слов). Команда без аргументов отображает имена и значения существующих переменных. См. также раздел «Встроенные переменные интерпретатора» в этой главе.Параметр-г Только для tcsh.