Полный man справочник по командам 4 АПК 00210-01 33 01-4 1. КОМАНДЫ ОБЩЕГО НАЗНАЧЕНИЯ Структура описания каждой команды имеет следующий формат: имя: приводятся имена команд и краткая информация о их назначении; формат: приводится формат команды. Параметры, взятые в квадратные скобки, могут быть опущены; многоточие после параметра указывает на то, что данный параметр может быть многократно повторен. описание: содержит подробное описание команды; файлы: перечисляются имена файлов, которые исполь- зуются данной командой; диагностика: перечисляются диагностические сообщения, ко- торые могут выдаваться в процессе выполнения данной команды; замечания: приводятся ограничения на область применения команд; дополнительные ссылки: делаются ссылки на сопряженные команды. Для удобства работы в скобках приводится номер части руководства программиста где описаны сопряженные команды Описание команд общего назначения приведено в приложе- нии. 5 АПК 00210-01 33 01-4 ПРИЛОЖЕНИЕ 6 АПК 00210-01 33 01-4 ИМЯ: apropos - поиск компонентов в справочнике по системе. ФОРМАТ: apropos ключ ... ОПИСАНИЕ: Команда apropos просматривает краткий справочник по системе и выдает все записи, содержашие вхождения эле- мента, указанного в списке ("ключ"). Поскольку каждая запись краткого каталога содержит номер раздела и наз- вание документа, эту команду удобно использовать для получения информации о компонентах, которые нe имеют отдельного документа, но упоминаются при описании какого-либо другого компонента. ПРИМЕРЫ При использовании команды: apropos time может быть получена следующая последавательность строк: alarm - выполнить команды в указанное время; time - команда выдачи времени работы команды. 7 АПК 00210-01 33 01-4 ИМЯ: ar - программа обслуживания архивов и библиотек. ФОРМАТ: ar ключ [позимя] архив имя ... ОПИСАНИЕ: Команда ar обслуживает группы файлов, об'единенных в единый архивный файл. Основным применением этой прог- раммы является создание и модификация библиотечных файлов, используемых редактором связий ld. Тем не ме- нее, она может быть использована в любых подобных целях. "Ключ" представляет собой один из символов drqtpmx, который может об'единяться с одним или несколькими из символов vuaibcl (последние могут быть опущены). Аргу- мент "архив" задает имя архивного файла. Аргумент "имя" представляет собой имя файла, который необходимо занести в архив или имя файла, уже входящего в состав архива. Ключи задают следующие режимы работы: d - Удаление файлов с указанными именами из архива; r - Запись перечисленных файлов в архив. Если файл уже входит в архив, то он заменяется на новый. Если вместе с ключом "r" используется необяза- тельный ключ "u", то в архиве заменяются только те файлы, которые имеют более поздние даты моди- фикации, чем одноименные файлы, входящие в ар- 8 АПК 00210-01 33 01-4 хив. Если используется один из ключей позициони- рования "abi" и присутствует параметр "позимя", новые файлы помещаются после (a) или перед (b или i) файлом "позимя". В противном случае новые файлы помещаются в конец; q - Быстрое добавление перечисленных файлов в конец архива. Ключи позиционирования не допускаются. В этом режиме не проверяется, находятся ли уже в архиве файлы с заданными именами. Этот режим по- лезен только при создании больших архивов по частям для устранения лишних действий; t - Получение имен файлов, входящих в архив. Если имена файлов не заданы, выдается список имен всех файлов архива, в противном случае выводится список имен только заданных файлов. Если файл с заданным именем отсутствует в архиве, выдается соответствующая диагностика; p - Выдача в стандартный файл вывода перечисленных файлов из архива. Содержимое архива не изменяет- ся; m - Перемещение перечисленных файлов. Если при- сутствует ключ позиционирования и параметр "по- зимя", файлы перемещаются в указанное место, как и в режиме "r", иначе файлы перемещаются в конец архива; 9 АПК 00210-01 33 01-4 x - Перечисленные файлы выделяются из архива в от- дельные файлы. Если не заданы имена файлов, рас- паковывается весь архив. Ни в коем случае коман- да х не изменяет архивный файл; v - Если указан данный ключ, команда ar выдает под- робный протокол своих действий. При использова- нии совместно с ключем "t", выдается более подпробная информация о файлах, входящих в ар- хив. Когда данный ключ используется совместно с ключем "p", перед каждым файлом указывается его имя; c - Создает новый архив, даже если архивный файл "архив" уже существует; l - Обычно команда ar помещает свои временные файлы в каталоге /tmp. Задание данного ключа приводит к тому, что они размещаются в текущем каталоге. ФАЙЛЫ: /tmp/v* временные файлы ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : ld, ar, lorder, ranlib ЗАМЕЧАНИЯ: Если в списке параметров один и тот же файл указан дважды, он может быть дважды помещен в архив. 10 АПК 00210-01 33 01-4 ИМЯ: as, newas - ассемблер ФОРМАТ: as [-] [-o обфайл] [имя...] ОПИСАНИЕ: Команда as ассемблирует файлы с указанными именами или стандартный файл ввода, если имена файлов не заданы. Если задан ключ "-", все неопределенные при ассембли- ровании символы считаются внешними. Результат работы команды as помещается в файл "обфайл" или, если не задан ключ "-o", используется файл a.out в текущем справочнике. Команда newas вызывает новый вариант ассемблера, в ко- тором улучшены диагностики, введена возможность ис- пользовать русские буквы в идентификаторах, но имеются некоторые ограничения на порядок описания идентифика- торов (все переменные в правой части операторов "=" должны быть определены). ФАЙЛЫ: /tmp/as2 второй проход ассемблера /tmp/atm[1-3]? временные файлы a.out об'ектный файл ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : ld, nm, adb, a.out. 11 АПК 00210-01 33 01-4 Имеется отдельное описание ассемблера. ДИАГНОСТИКА: Если входной файл не доступен для чтения - выдается знак вопроса "?", за которым следует имя файла. Если ассемблируемая программа содержит ошибки, то выдается один символ диагностики, имя файла и номер строки, в которой была обнаружена ошибка. Возможно следующие символы диагностики: ) Нарушен баланс скобок; ] Нарушен баланс скобок; < Незавершенная строка; * Некорректная косвенная ссылка; . Некорректное изменение текущего адреса; a Ошибка в адресе; b Переход на нечетный либо слишком большой адрес; e Ошибка в выражении; f Неверный локальный символ (типа 'f' или 'b'); g Неизвестный символ; i Конец файла в кострукции "if"; m Символ многократно определен как метка; o Нечетный адрес; 12 АПК 00210-01 33 01-4 p "." различается в 1-ом и 2-ом проходе; r Ошибка размешения; u Неопределенный символ; x Синтаксическая ошибка. ЗАМЕЧАНИЯ: При диагностике синтаксических ошибок номер строки, где произошла ошибка, может указываться невернo. 13 АПК 00210-01 33 01-4 ИМЯ: at - выполнить команды в указанное время. ФОРМАТ: at время [день] [файл] ОПИСАНИЕ: Команда at сохраняет копию файла "файл" (по умолчанию - стандартный файл ввода) для запуска в указанное вре- мя. Предполагается, что "файл" содержит программу на языке SHELL (или CSHELL). В начало файла вставляется команда перехода в справочник (cd), который был теку- щим в момент выполнения команды at. За этим следует определение всех макропеременных "среды". При запуске подобного командного файла используются идентификаторы группы (GID) и пользователя (UID) создателя. Аргумент "время" представляет собой от 1 до 4 цифр, за которыми могут следовать символы "a", "p", "n" или "m", означающие "до полудня", "после полудня", "днем" и "ночью" соответственно. Одна или две цифры рассмат- риваются как часы. Три или четыре цифры рассматривают- ся как часы и минуты. Если буквы после цифр отсутству- ют, подразумевается 24-часовое суточное время. Необязательный параметр "день" используется для зада- ния либо названия месяца, за которым следует число, либо - дня недели. Если присутсвует слово "week", вызов откладывается на семь дней. Названия месяцев и дней могут усекаться до распознаваемой величины. При- 14 АПК 00210-01 33 01-4 ведем примеры допустимых команд: at 8am jan 24 at 1530 fr week Программы at выполняются посредством периодического запуска команды /usr/lib/atrun из cron. Дискретность at зависит от того, как часто выполняется atrun. ФАЙЛЫ: /usr/spool/at/гг.ддд.чччч.нн Работа должна быть выполнена в "чччч" часу "ддд" дня "гг" года; "нн" представляет собой уникаль- ный номер. /usr/spool/at/lasttimedone Содержит "чччч" для последнего часа работы. /usr/spool/at/past Каталог работ, которые выполняются в настоящее время. /usr/lib/atrun Программа, которая выполняет работы в соот- ветствии с расписанием. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : calendar, cron ДИАГНОСТИКА: Сообщения о различных синтаксических ошибках и указа- ниях времени вне допустимого диапазона. 15 АПК 00210-01 33 01-4 ЗАМЕЧАНИЯ: Вследствие дискретности выполнения /usr/lib/atrun могут происходить ошибки в планировании работы с опоз- данием до 24 часов. 16 АПК 00210-01 33 01-4 ИМЯ: awk - язык сканирования и обработки текста ФОРМАТ: awk [-fc] [прог] [файл]... ОПИСАНИЕ: Команда awk является интерпретатором своеобразного языка, предназначенного для обработки текстов. В каждом входном файле "файл" осуществляется поиск строк, которые соответствуют одному из набора шабло- нов, заданных в аргументе "прог". С каждым шаблоном в "прог" может быть связано некоторое действие, которое будет выполнено когда установится соответствие между строкой файла "файл" и данным шаблоном. Набор шаблонов может задаваться либо непосредственно в параметре "прог", либо указываться как "-f файл". Файлы считываются по порядку.Если файлы не указаны или задан параметр "-", используется стандартный файл вво- да. Каждая строка сравнивается с шаблоном каждого опе- ратора "шаблон-действие". Для каждого соответствующего шаблона выполняется связанное с ним действие. Входная строка состоит из полей, которые разделены пробелами (это умолчание может быть изменено с помощью FS). Поля обозначаются $1,$2,...;. $0 относится ко всей строке. Оператор "шаблон-действие" имеет следующий вид: 17 АПК 00210-01 33 01-4 шаблон {действие} Отсутствие части "{действие}" означает печать соот- ветствующих "шаблону" строк. Отсутствие "шаблона" оз- начает, что "действие" выполняется над каждой вводимой строкой. Действие представляет собой последовательность опера- торов. Имеются следующие операторы: if(условие) оператор [else оператор] while (условие) оператор for (выр; условие; выр) оператор break continue { [оператор]... } переменная = выр print [список-выр] [>выр] printf формат [,список-выр] [>выр] next # пропустить остальные шаблоны # для этой входной строки exit # пропустить остальной ввод. Операторы заканчиваются точкой с запятой, символом новой строки или правой скобкой. Пустой список выраже- ний относится ко всей строке. Выражения представляют собой строку или числовые значения и строятся с по- мощью операций +, -, *, /, % и конкатенация (указыва- емая пробелом). В выражениях допускаются также опера- 18 АПК 00210-01 33 01-4 ции языка Си ++, --, +=, -=, *=, /= и %=. Переменные могут представлять собой скаляры, элементы массивов (обозначаемые x[i]) или поля. Начальными значениями переменных являются пустые строки. Индексами массивов могут быть любые строки, не обязательно числовые - это позволяет организовать некоторую разновидность ассоци- ативной памяти. Строковые константы заключаются в ка- вычки "...". Оператор print выдает свои параметры в стандартный вывод (или в файл, если задано ">файл"), разделяя их текущим разделителем выходных полей и завершая разде- лителем выходных записей. Оператор printf форматирует свой список выражений в соответствии с форматом. Встроенная функция length возвращает длину своего па- раметра, рассматриваемого как строку, или всей строки, если параметр отсутствует. Имеются также встроенные функции ехр, log, sqrt и int, последняя усекает значе- ние своего параметра до целого. Функция substr(s,m,n) возвращает n-символьную подстроку строки s, начинающу- юся с m-ой позиции. Функция sprintf(фмт,выр,выр,...) форматирует выражения в соответствии с printf форма- том, заданным посредством "фмт",и возвращает результи- рующую строку. Шаблоны представляют собой произвольные булевы комби- нации (!, ||, && и скобки) регулярных выражений и вы- ражений отношения. Регулярные выражения должны обрам- 19 АПК 00210-01 33 01-4 ляться знаками "/". Изолированные регулярные выражения в шаблоне относятся ко всей строке. Регулярные выраже- ния могут присутствовать также и в выражениях отноше- ния. Шаблон может состоять из двух шаблонов, разделенных запятой (в этом случае действие выполняется для всех строк между строкой, в которой встречается первый шаблон и строкой, в которой встречается второй шаблон). Выражение отношения может иметь одну из следующих форм: выражение опподб регулярное-выражение выражение опотн выражение где "опотн" представляет собой одну из шести орераций отношения языка Си, а "опподб" представляет собой либо знак ^ ("входит"), либо !^ ("не входит"). Условие представляет собой арифметическое выражение, выражение отношения либо их булеву комбинацию. Специальные шаблоны BEGIN и END могут использоваться для получения управления перед считыванием первой входной строки и после считывания последней. BEGIN должен быть первым шаблоном, а END - последним. Отдельный символ "c" может использоваться для разделе- ния полей путем указания в начале программы: 20 АПК 00210-01 33 01-4 BEGIN {FS="c"} либо путем использования ключа "-fc". К именам переменных со специальным значением относят- ся: NF - количество полей в текущей записи; NR - порядковый номер текущей записи; FILENAME - имя текущего входного файла; FS - разделитель входных полей (по умолчанию - пробел); RS - разделитель входных записей (по умолчанию - символ новой строки); OFS - разделитель выходных полей (по умолчанию - пробел); ORS - разделитель выходных записей (по умолчанию - символ новой строки); OFMT - выходной формат для чисел (по умолчанию - "%.6g"); $0 - обрабатываемая строка; $i - i-тое поле обрабатываемой строки. ПРИМЕРЫ: Печать строк с длиной более 72 символов: 21 АПК 00210-01 33 01-4 length > 72 Печать первых двух полей в обратном порядке: {print $2, $1} Печать полей в обратном порядке: {for (i=NF; i>0; --i) print $i} Печать всех строк, начиная со строки, содержащей слово "start" до строки со словом "stop" включительно: /start/,/stop/ Печать всех строк, у которых первое поле отличается от первого поля предыдущей строки: $1 != prev {print; prev = $1} ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : lex, sed. Имеется отдельное описание awk. ДИАГНОСТИКА: В версии awk для машин с ограниченным размером адресу- емой памяти (порядка 64Кбайт на процесс) основные ди- агностические сообщения заменены номерами ошибок. При этом часть дигностической информации теряется для пользователя. Далее приводится список диагностических сообщений выдаваемых полной версией awk с их номерами (потерянная информация обозначается (?)): 22 АПК 00210-01 33 01-4 1 : unknown type (?) in penter 2 : unknown type (?) in freetr 3 : regular expression too long 4 : unknown type (?) in cfoll 5 : unknown type (?) in first 6 : can't open (?) 7 : record `(?)' too long 8 : record `(?)' has too many fields 9 : record `(?)' has too many fields 10 : built giant record `(?)...' 11 : trying to access field (?) 12 : can't open (?) 13 : out of space in ALLOC 14 : illegal statement (?) 15 : unexpected break, continue or next 16 : unexpected break, continue or next 17 : unknown boolean operator (?) 18 : unknown relational operator (?) 19 : out of temporaries in gettemp 20 : format item (?)... too long 21 : not enough arguments in printf((?)) 22 : illegal arithmetic operator (?) 23 : division by zero 24 : division by zero 25 : division by zero 26 : division by zero 27 : illegal assignment operator (?) 28 : (?) is not an array 23 АПК 00210-01 33 01-4 29 : illegal jump type (?) 30 : illegal function type (?) 31 : string (?) too long to print 32 : too many output files (?) 33 : can't open file (?) 34 : out of space in makesymtab 35 : symbol table overflow at (?) 36 : can't set $0 37 : can't set $0 38 : illegal reference to array (?) 39 : funny variable (?): (?) (?) (?) (?) 40 : out of space in tostring on (?) ЗАМЕЧАНИЯ: Не существует явного преобразования между числами и строками. Для того, чтобы выражение обрабатывалось как число, добавьте к нему 0, а для того, чтобы оно обра- батывалось как строка, об'едините его с "". 24 АПК 00210-01 33 01-4 ИМЯ: bas - интерпретатор языка BASIC. ФОРМАТ: bas [file] ОПИСАНИЕ: Команда bas является интерпретатором одного из диалек- тов языка BASIC. Если в командной строке задано имя файла "file", то перед вызовом интерпретатора этот файл считывается (предполагается, что он содержит программу на языке BASIC). Bas допускает строки следу- ющего вида: оператор метка оператор В качестве метки используется целое положительное число. Помеченные операторы запоминаются для последу- ющего выполнения и сортируются в порядке возрастания значений меток. Непомеченные операторы выполняются не- медленно. Если оператор содержит вычисляемое выражение без присваивания, результат выдается сразу. СИНТАКСИС ОПЕРАТОРОВ: выражение Выражение выполняется для достижения желаемого эффекта (присваивание или вызов фукции) или для печати.В дальнейшем выражение будет обозначаться символом V; 25 АПК 00210-01 33 01-4 comment ... Этот оператор игнорируется, применяется для включения комментария в программу; done Выход из интерпретарора обратно в систему; dump Вызывает печать имени и текущего значения всех переменных в процессе выполнения программы; edit Вход в редактор ed. В качестве имени файла ре- дактору ed передается параметр file. После выхо- да из редактора происходит возврат в интерпрета- тор, причем программа находящаяся в файле file, компилируется заново. for идентификатор = V V оператор for идентификатор = V V группа операторов next Оператор for порождает многократное выполнение оператора (первая форма записи) или группы опе- раторов (вторая форма записи), контролируя коли- чество итераций по значению переменной name. Этой переменной присваивается значение первого выражения, которое увеличивается на единицу после каждого шага выполнения цикла. Цикл про- должается до тех пор пока, значение переменной не превышает значения второго выражения. goto V 26 АПК 00210-01 33 01-4 Выражение вычисляется, переводится в целое, после чего происходит переход к оператору, метка которого равна значению выражения. Программа продолжает выполнятся с этого места. Если данный оператор не помечен, то перед его интерпретацией компилируются операторы накопленные ранее. if V оператор if V группа операторов [ else группа операторов ] fi Оператор (первая форма) или группа операторов (вторая форма) выполняется, если значение выра- жения не равно нулю. Во второй форме допускается наличие альтернативной группы операторов. list [V [V]] Этот оператор применяется для просмотра текста программы. Если отсутствуют аргументы, выдается вся программа. Если присутствует один аргумент, то выдается только один оператор, метка которого равна значению заданного выражения. Если заданы два аргумента, то выдаются операторы в указанном диапазоне. print список "Список" включает в себя выражения, переменные и 27 АПК 00210-01 33 01-4 текстовые константы (текстовые константы берутся в кавычки (")). Оператор print выдает значения перечисленных выражений или переменных совместно с текстом. prompt список Действует аналогично оператору print, только после выдачи последнего символа не происходит перехода на новую строку. return [V] Выражение вычисляется и его значение использует- ся в качестве значения, которое возвращает функция. Если аргумент отсутствует, возвращается ноль. run Программа компилируется, датчику случайных чисел устанавливается стартовое значение. Управление передается оператору с наименьшим значением метки. save [V [V]] Оператор save работает аналогично оператору list, только вывод идет не на терминал, а в файл file. Если команда bas была вызвана без аргумен- та, используется файл b.out в текущем каталоге. СИНТАКСИС ВЫРАЖЕНИЙ: идентификатор Идентификатор может содержать произвольное коли- 28 АПК 00210-01 33 01-4 чество символов, однако значимыми считаются пер- вые четыре. Идентификатор должен начинаться с буквы и может состоять только из латинских строчных букв и цифр. число Число определяет числовую константу и записыва- ется в традиционном фортрановском стиле. Число состоит из цифр и может содержать десятичную точку или знак порядка "e" с последующей экспо- нентой. Например: 4, -15, 0.34, 1.2e+5. (V) Скобки применяются для изменения старшинства вы- полнения операций. _V Инверсия значения выражения. V операция V Выполнение операции. V( [V[, V]] ) Вызов функции с заданным числом аргументов. Зна- чение первого выражения используется в качестве метки оператора, с которого начинается функция. Если значение выражения получается отрицатель- ным, вызывается соответствующая встроенная функция (правда, неизветно какая именно). идентификатор [ V[, V]] Значение выражения, переведенное в целое, ис- пользуется для индексации массивов. Запись вида a[1,2] равносильна записи вида a[1][2]. Значения 29 АПК 00210-01 33 01-4 индексов усекаются до диапазона от 0 до 32767. СПИСОК ОПЕРАЦИЙ: = Операция присваивания. Левый операнд должен быть идентификатором или элементом массива. Значение правого операнда присваивается левому. & | Операция логическое "И" (&) дает результат ноль, если какой-либо из операндов равен нулю, и не ноль, если оба операнда не равны нулю. Операция логическое "ИЛИ" (|) дает результат ноль, если оба операнда равны нулю, и не ноль, если какой- либо из них не равен нулю. < <= > >= <> Операции отношения: < меньше; <= не больше; > больше; >= не меньше; <> не равно; возвращают значение одного из аргументов если отноше- ние соблюдается, в противном случае возвращается ноль. Оперции отношения одного уровня допускают вложенность следующего вида: результат операции a>b>c, будет ана- логичен результату операции a>b&b>c; 30 АПК 00210-01 33 01-4 + - Сложение и вычитание; * / Умножение и деление; ^ Возведение в степень; ВСТРОЕННЫЕ ФУНКЦИИ: arg(i) Получение i-того параметра текущего вызова функции; exp(x) Экспонента от x; log(x) Натуральный логарифм от x; sqr(x) Квадратный корень от x; sin(x) Синус от x (радианы); cos(x) Косинус от x (радианы); atn(x) Арктангенс от x. Возвращает значения в диапазоне от -J/2 до J/2; rnd() Датчик случайных чисел, возвращает значения в диапазоне от 0 до 1; 31 АПК 00210-01 33 01-4 expr() Программный ввод. Строка читается из стандартно- го файла ввода и рассматривается как выражение. Программа получает значение этого выражения; abs() Абсолютное значение; int(x) Перевод x в целое; ФАЙЛЫ: /tmp/btm* временные файлы b.out файл для сохранения программы /bin/ed редактор ДИАГНОСТИКА: Синтаксические ошибки приводят к выдаче некорректной строки. 32 АПК 00210-01 33 01-4 ИМЯ: basename - отбросить суффиксы и префиксы имени файла. ФОРМАТ: basename строка [суффикс] ОПИСАНИЕ: Команда basename удаляет из "строки" все префиксы, оканчивающиеся символом "/", а также "суффикс", если он присутствует в строке, и выдает результат в стан- дартный файл вывода. Эта команда обычно используется в программах написанных на языке SHELL. ПРИМЕРЫ: Приведеm процедуру, вызываемую с параметром /usr/src/cmd/cat.c, которая компилирует файл с указан- ным именем и помещает результат в файл cat в текущем каталоге: cc $1 mv a.out `basename $1 .c` ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : sh 33 АПК 00210-01 33 01-4 ИМЯ: bc - интерпретатор языка BC. ФОРМАТ: bc [-c] [-l] [файл...] ОПИСАНИЕ: Команда bc представляет собой интерактивный процессор для языка, который по синтаксису напоминает язык Cи, но позволяет выполнять арифметические операции с про- извольной точностью. Программа на данном языке считы- вается из стандартного файла ввода. Если заданы аргу- менты типа "файл", то предполагается, что это имена файлов, содержащих рабочие подпрограммы на языке BC. Эти файлы считываются перед выполнением основной прог- раммы. Если задан параметр "-l", то используется стан- дартная библиотека функций произвольной точности. В приводимом кратком описании синтаксиса языка BC, ис- пользуются следующие сокращения: B последовательность символов от "a" до "z"; V выражение; OP оператор. КОММЕНТАРИИ: ограничиваются последовательностями символов "/*" и "*/" ИМЕНА: 34 АПК 00210-01 33 01-4 простые переменные: B элементы массива: B[V] слова "ibase", "obase" и "scale" ПРОЧИЕ ОПЕРАНДЫ: числа произвольной длины (возможно со знаком и десятичной точкой). (V) sqrt(B) квадратный корень length(B) число значащих десятичных цифр scale(B) точность B(V,...,V) вызов подпрограммы ОПЕРАЦИИ: + - * / % ^ (% - остаток, ^ - степень) ++ -- (префикс и постфикс, применяются к именам) == <= >= != < > = =+ =- =* =/ =% =^ ОПЕРАТОРЫ: V {OP; ... ;OP} if(V) OP while(V) OP for(V;V;V) OP пустой оператор break quit 35 АПК 00210-01 33 01-4 ОПРЕДЕЛЕНИЯ ФУНКЦИЙ: define B(B, ... ,B){ auto B, ... ,B OP; ... OP return(B) } Функции из стандартной библиотеки: s(x) - синус; c(х) - косинус; e(х) - экспонента; l(x) - логарифм; a(х) - арктангенс; j(n,x) - функция Бесселя Все параметры функций передаются по значению. Значение оператора, являющегося выражением, распечаты- вается, если основной операцией не является присваива- ние. Операторы могут разделяться либо точками с запя- той, либо символами новой строки. Присваивание пере- менной scale влияет на количество цифр, получаемых в результате арифметических операций по правилам dc. Присваивания переменным ibase и obase устанавливает входное и выходное основания соответственно. Одна и та же буква может использоваться в качестве массива, функции и простой переменной одновременно. Все переменные в программе являются глобальными. Пере- менные "auto" при вызове функций помещаются в стек. 36 АПК 00210-01 33 01-4 При использовании массивов в качестве параметров функции и при определении их как автоматических пере- менных, имя массива должно сопровождаться пустыми квадратными скобками. Например, подпрограмма: scale = 20 define e(x){ auto a,b,c,i,s a = 1 b = 1 s = 1 for(i=1; i==1; i++){ a = a*x b = b*i c = a/b if(c == 0) return(s) s = s+c } } определяет функцию для вычисления приближенного значе- ния показательной функции, а for(i=1; i <= 10; i++) e(i) выдает приближенные значения показательной функции для первых десяти целых чисел. Команда bc фактически представляет собой препроцессор 37 АПК 00210-01 33 01-4 для dc, который вызывается автоматически, если не при- сутствует ключ "-c" (только компиляция). В этом случае результат направляется не на вход dc, а в стандартный файл вывода. ФАЙЛЫ: /usr/lib/lib.b математическая библиотека ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : dc Имеется отдельное описание bc. ЗАМЕЧАНИЯ: Отсутствуют операции &&, || и !. Оператор for должен иметь все три выражения. Оператор quit срабатывает при считывании, а не при выполнении. 38 АПК 00210-01 33 01-4 ИМЯ: cal - печать календаря ФОРМАТ: cal [месяц] год ОПИСАНИЕ: Команда cal выдает календарь указанного года. Если задан год и месяц, выдается календарь только для этого месяца. "год" может быть в пределах от 1 до 9999. "ме- сяц" является числом от 1 до 12. ЗАМЕЧАНИЯ: Использование данной команды для получения ответов на вопросы типа: "На какой день недели приходильсь 2 ян- варя 1928 года?" может оказаться неправомерным, так как в программе не учитываются некоторые исторические факты. Будьте внимательны: "cal 78" относится к ранней хрис- тианской эре, а не к XX столетию. 39 АПК 00210-01 33 01-4 ИМЯ: calendar - "электронный" ежедневник ФОРМАТ: calendar [-] ОПИСАНИЕ: Команда calendar просматривает файл "calendar" в теку- щем справочнике и выдает все строки, содержашие сегод- няшнюю или завтрашнюю дату. Даты могут задаваться в виде: "месяц.день", например, "12/7", но не "7 декаб- ря" или "7/12". В конце недели понятие "завтра" вклю- чает и понедельник. Когда присутствует ключ "-", команда calendar проделы- вает указанную работу для каждого пользователя, име- ющего в своем регистрационном справочнике файл "calendar", и посылает ему результат, если он имеется, с помощью mail. Обычно это делается в ночные часы ежедневно под управлением cron. ФАЙЛЫ: calendar ежедневник /usr/lib/calendar генератор поисковых ключей /etc/passwd /tmp/cal* временный файл Используются: egrep, sed, mail ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : at, cron, mail 40 АПК 00210-01 33 01-4 ЗАМЕЧАНИЯ: Расширение понятия "завтра" в команде calendar не от- носится к дням, идущим после праздников. 41 АПК 00210-01 33 01-4 ИМЯ: cat - выдача содержимого файлов. ФОРМАТ: cat [-] [-u] файл... ОПИСАНИЕ: Команда cat последовательно считывает каждый "файл" и записывает результат в стандартный файл вывода. Так, команда: cat file распечатывает указанный файл, а команда cat file1 file2 > file3 об'единяет первые два файла и помещает результат в третий файл. Если входные файлы не указаны или задан ключ "-", ис- пользуется стандартный файл ввода. Необязательный па- раметр "-u" указывает на необходимость подавления обычно выполняемой cat буферизации. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : pr, cp ЗАМЕЧАНИЯ: Будьте осторожны и не используйте команд вида "cat a b > a" и "cat" a b > b", которые разрушают входные файлы перед считыванием. 42 АПК 00210-01 33 01-4 ИМЯ: cb - оформление Си-программ ФОРМАТ: cb ОПИСАНИЕ: Команда cb переписывает копию C-программы из стан- дартного файла ввода в стандартный файл вывода с про- белами и отступами, отображающими структуру программы. 43 АПК 00210-01 33 01-4 ИМЯ: cc - вызов компилятора с языка Си ФОРМАТ: cc [ключ]... файл... ОПИСАНИЕ: Команда cc предназначена для вызова компилятора с язы- ка Си. Она воспринимает параметры нескольких типов. Параметры, имена которых заканчиваются на ".c", счита- ются исходными программами на языке Си.Они компилиру- ются и каждая об'ектная программа остается в файле, имя которого получается из имени соответствующего ис- ходного файла после замены ".c" на ".o". Файл ".o" удаляется, если одна Си-программа компилируется и заг- ружается в одном проходе. Аналогично параметры, чьи имена заканчиваются на ".s", считаются исходными программами на языке ассемблера и ассемблируются, в результате чего получаются файлы ".o". В команде cc могут задаваться следующие ключи: -c Отменяет фазу сборки и вызывает генерацию об'ектного кода даже тогда, когда компилируется только одна программа; -f Указание о том, что на машине отсутствует FPP- процессор. В этом случае вместе с программой 44 АПК 00210-01 33 01-4 загружаются необходимые подпрограммы из библи- отеки эмуляции FPP-процессора; -p Включение профилирования программы. Стандартная программа запуска заменяется программой, которая при запуске автоматически вызывает monitor (2) и организует вывод файла mon.out при нормальном завершении выполнения об'ектной программы. После этого может быть построен график выполнения с помощью команды prof; -d Генерация кода и дополнительной информации для отладчика "cdeb"; -O Включение фазы оптимизации об'ектного кода; -S Компилирует перечисленные Си-программы и остав- ляет результат работы в виде ассемблерного текста в соответствующих файлах с суффиксами ".s"; -e Запускает только макропроцессор для перечислен- ных Си-программ и выдает результат в стандартный файл вывода. Для использования результата в пос- ледующих вызовах "cc" нужно обработать результат редактором "sed" по следующей программе: "s/^# /# line/"; -a Блокируется вызов макропроцессора "cpp". Флаг используется, если входной текст уже прошел об- работку препроцессором; 45 АПК 00210-01 33 01-4 -P Каждый файл, имя которого имеет суффикс ".c" об- рабатывается только макропроцессором "cpp", результат работы которого помещается в файл с соответствующим именем и суффиксом ".i", при этом подавляется вывод строк вида "#line ..."; -C Обычно макропроцессор "cpp" убирает комментарии из своего вывода. Флаг -C блокирует уничтожение комментариев, что бывает необходимо для программ "xstr" или "lint"; -o выход Помещает окончательный результат в файл с именем "выход". Если используется этот ключ, файл "a.out" не будет изменен. -Dимя=опр -Dимя Определяет указанное "имя" для препроцессора, по аналогии с "#define". Если определение не зада- но, данное имя определяется как "1"; -Uимя Удаляет все начальные определения указанного имени; -Iкат Поиск файлов "#include", чьи имена не начинаются с символа "/", всегда производится сначала в те- кущем справочнике, затем в справочниках "кат", перечисленных при ключе -I, а затем - в катало- гах стандартного списка; 46 АПК 00210-01 33 01-4 -B строка Ищет заменяющие фазы компилятора в файлах с име- нем "строка" с суффиксами ccp, c0, c1 и c2. Если "строка" пустая, используется стандартная ре- зервная версия; -t[p012] Ищет только указанные фазы компилятора в файлах, имена которых строятся в соответствии с ключем -B. При отсутствии ключа -B подразумевается сле- дующая "строка": "/usr/c/". -T[al]имя Ассемблер (если указано "a") или редактор связей ("l") вызываются из файла "имя" вместо вызыва- емых по умолчанию. Остальные параметры являются либо ключами редактора связей, либо совместимыми с Си об'ектными программами, полученными обычно в результате предшествующих выпол- нений cc, либо библиотеками совместимых с Си программ. Эти программы, вместе с результатами указанных компи- ляций загружаются (в заданном порядке), давая в ре- зультате выполняемую программу с именем a.out. ФАЙЛЫ: файл.c Входной файл файл.o Об'ектный файл a.out Загрузочный выход /tmp/ctm? Временный 47 АПК 00210-01 33 01-4 /lib/cpp препроцессор /lib/c0 компилятор 0 проход /lib/c1 компилятор 1 проход /lib/fc1 1 проход при флаге "-f" /usr/c/oc[01] резервный компилятор /usr/c/ocpp резервный препроцессор /lib/c2 необязательный оптимизатор /lib/crt0.o Динамический стартер /lib/mcrt0.o Стартер для профилирования /lib/lib[aс].a Стандартные библиотеки /usr/include стандартный каталог для файлов "#include". /lib/fcrt0.0 Стартер для флага "-f" ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : cdeb, prof, adb, ld Имеется отдельное описание языка Си. ДИАГНОСТИКА: Диагностические сообщения, генерируемые самим компиля- тором си, являются достаточно понятными. В некоторых случаях сообщения могут генерироваться ассемблером или редактором связей. 48 АПК 00210-01 33 01-4 ИМЯ: ccat - выдача содержимого компрессированных файлов. ФОРМАТ: ccat [файл ...] ОПИСАНИЕ: Команда ccat выдает содержимое файлов, "сжатых" с по- мощью команды compact. Файл не изменяется. ДИАГНОСТИКА: Сообщения о файлах, которые не могут быть открыты, и т.п. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : compact, uncompact 49 АПК 00210-01 33 01-4 ИМЯ: cd - сменить рабочий справочник ФОРМАТ: cd dirname ОПИСАНИЕ: Команда cd задает справочник с именем "dirname" в ка- честве текущего рабочего справочника. Для изменения текущего справочника необходимо чтобы справочник "dirname" имел разрешение на поиск в нем для данного пользователя. Поскольку для выполнения каждой команды создается новый процесс, команда cd была бы неэффективной, если бы она была написана как обычная команда. Поэтому она является встроенной функцией языков управления задани- ями SHELL и CSHELL. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : csh, sh, pwd, chdir. 50 АПК 00210-01 33 01-4 ИМЯ: chmod - изменить статус файла ФОРМАТ: chmod статус файл ... ОПИСАНИЕ: Статус каждого из перечисленных файлов изменяется в соответствии со значением параметра "статус", которое может быть абсолютным или символическим. Абсолютное значение статуса представляет собой восьмеричное число, строящееся по правилу "или" из следующих значе- ний: 4000 установить идентификатор хозяина файла при вы- полнении; 2000 установить идентификатор группы по группе хозя- ина файла при выполнении; 1000 бит сохранения образа текста; 0400 разрешение на чтение файла владельцу; 0200 разрешение на запись файла владельцу; 0100 разрешение выполнения (поиска в справочнике) владельцу; 0070 разрешение чтения, записи, выполнения (поиска) группе; 0007 разрешение чтения, записи, выполнения прочим 51 АПК 00210-01 33 01-4 пользователям. Символическое значение "статус" имеет следующий вид: [кто] оп полномочие [оп полномочие] ... Поле "кто" представляет собой комбинацию букв "u" (для полномочий пользователя), "g" (группа), "o" (прочие). Буква "a" заменяет сочетание "ugo". Если поле "кто" опущено, по умолчанию принимается значение "a", однако принимается во внимание маска создания файла (см. umask). Поле "оп" может представлять собой "+" - для добавле- ния полномочия в режим файла, "-" - для удаления пол- номочия и "=" для абсолютного присваивания полномочия (все остальные биты будут сброшены). "Полномочие" представляет собой произвольную комбина- цию букв "r" (чтение), "w" (запись), "x" (выполнение), "s" (установление идентификации пользователя или груп- пы) и "t" (сохранение текстов после выполнения). Отсутствие поля полномочия полезно использовать только с символом "=" для удаления всех полномочий. ПРИМЕРЫ: Первый из приведенных ниже примеров запрещает запись "прочим" пользователям, а второй делает указанный файл выполняемым. chmod o-w файл 52 АПК 00210-01 33 01-4 chmod +x файл ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: ls, chown, stat, umask. ЗАМЕЧАНИЯ: Может быть указано несколько символических режимов, разделенных запятыми. Операции выполняются в заданном порядке. Букву "s" имеет смысл использовать только совместно с "u" или "g". Только владелец файла (или супер-пользователь) может изменить его режим. 53 АПК 00210-01 33 01-4 ИМЯ: clear - очистить экран терминала. ФОРМАТ: clear ОПИСАНИЕ: Команда clear стирает экран терминала, используя ин- формацию об особенностях данного устройства из файла описаний характеристик терминалов (/etc/termcap). ФАЙЛЫ: /etc/termcap описание характеристик терминалов раз- личных типов. 54 АПК 00210-01 33 01-4 ИМЯ: cmp - сравнение двух файлов. ФОРМАТ: cmp [-l] [-s] файл1 файл2 ОПИСАНИЕ: Два указанных файла сравниваются. (если параметр "файл1" представляет собой "-", используется стан- дартный файл ввода). Без параметров команда cmp не вы- дает никаких сообщений, если файлы одинаковы,или ука- зывает номер байта и строки, где произошло несовпаде- ние, если они отличаются. Если один из файлов является началом другого, об этом сообщается. -l печатает номер байта (десятичный) и отличающиеся байты (восьмеричные) для каждого несовпадения; -s для отличающихся файлов ничего не печатается, возвращается только код. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: diff, comm ДИАГНОСТИКА: Возвращается выходной код, равный 0 для идентичных файлов, 1 для отличающихся файлов и 2 для недоступных или пропущенных параметров. 55 АПК 00210-01 33 01-4 ИМЯ: col - уничтожить обратные переводы строки. ФОРМАТ: col [-bfx] ОПИСАНИЕ: Команда col читает стандартный файл ввода и производит запись в стандартный файл вывода. Она выполняет нало- жение строк, подразумеваемое обратными переводами строки (ESC-7 в коде КОИ-8) и прямыми и обратными пе- реводами строки на полшага (ESC-8 и ESC-9). Команда col особенно полезна для фильтрации многоколоночного вывода, полученного командой ".rt" из pif и вывода, получаемого в результате использования препроцессора tbl. Хотя команда col воспринимает на вводе переводы строки на полшага, она обычно не передает их на вывод. Вместо этого текст, который должен был появиться между строк, сдвигается к следующей нижней границе полной строки. Этот режим может быть отменен ключем -f (точно).В этом случае выход col может содержать переводы строки на полшага вперед, однако какие-либо переводы строки назад всегда отсутствуют. Если задан ключ -b, col предполагает, что используемое устройство вывода не имеет возможности возврата на шаг. В этом случае, если несколько символов должны по- явиться на одном и том же месте, будет выдан только 56 АПК 00210-01 33 01-4 последний считанный символ. Управляющие символы SI (017 в коде КОИ-8) и SO (016) считаются началом и концом текста с альтернативным на- бором символов. Набор символов (исходный или альтерна- тивный), связанный с каждым считанным печатным симво- лом, запоминается. При вводе символы SI и SO вставля- ются в нужных местах, чтобы обеспечить соответствующую обработку каждого символа. Команда col обычно преобразует пробелы в символы табу- ляции, чтобы сократить время печати. Если указан ключ -x, это преобразование отменяется. Из входного потока удаляются все управляющие символы, за исключением символов пробела (SP-040), возврата на шаг (BS-010), табуляции (HT-011), возврата каретки (CR-015), новой строки (LF-012), за которым следует один из символов ESC-7, ESC-8, ESC-9, SI, SO. Все ос- тальные непечатаемые символы игнорируются. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: pif, tbl, greek ЗАМЕЧАНИЯ: Нельзя возвратиться назад более, чем на 128 строк. В строке не должно быть более 800 символов, включая символы возврата на шаг. 57 АПК 00210-01 33 01-4 ИМЯ: colcrt - фильтр для файлов в формате pif. ФОРМАТ: colcrt [-] [-2] [файл ...] ОПИСАНИЕ: Команда colcrt обеспечивает виртуальные возможности перевода строки на полшага на половину межстрочного интервала и обратного перевода строки для терминалов, не имеющих указанных средств и на которых повторный вывод символа в одну и ту же позицию разрушает имев- шийся в ней символ. Сдвинутые на полстроки символы и символы подчеркивания (замененные на тире "-") распо- лагаются на новых строках между обычными выходными строками. Необязательный параметр "-" подавляет все подчеркива- ния. Это особенно полезно для просмотра полностью окаймленных таблиц после tbl. Ключ -2 вызывает печать сдвинутых на полстроки симво- лов, фактически удваивая интервал вывода. Обычно ис- пользуется минимальный интервал выводного формата, ко- торый подавляет печать пустых строк. Однако данная программа никогда не подавляет печать двух последова- тельных пустых строк. Ключ -2 полезен при выводе на АЦПУ, когда вывод содержит надстрочные и подстрочные индексы, которые иначе не были бы видны. 58 АПК 00210-01 33 01-4 Типичное использование команды colcrt следующее: tbl exum2.n | pif -ms | colcrt - | more ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: pif, col, more, ul. ЗАМЕЧАНИЯ: Нельзя вернуться более чем на 102 строки. В общем случае при повторном выводе в одну и ту же по- зицию происходит потеря символа.Как специальный слу- чай, в результате наложения "|" и "-" или подчерки- вания получается "+". Длина строки ограничиваются 132 символами. Требуется определенная осторожность при обработке надстрочных и подстрочных индексов в документах, кото- рые уже имеют двойной интервал. 59 АПК 00210-01 33 01-4 ИМЯ : colrm - удалить указанные колоноки. ФОРМАТ: colrm [начстлб [констлб]] ОПИСАНИЕ: Команда colrm удаляет из файла указанные столбцы. Информация читается из стандартного файла ввода и после обработки записывается в стандартный файл выво- да. Если при вызове указан только один параметр, в каждой строке будут удалены все позиции, начиная с указанного столбца. Если указаны два параметра, будут удалены все позиции от начального столбца до конечного столбца. Нумерация столбцов начинается со столбца 1. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: expand ЗАМЕЧАНИЯ Символы табуляции рассматриваются как один символ и один столбец. 60 АПК 00210-01 33 01-4 ИМЯ: comm - выбрать (отбросить) одинаковые строки файлов. ФОРМАТ: comm [-[123]] файл1 файл2 ОПИСАНИЕ: Команда comm считывает файлы "файл1" и "файл2", кото- рые должны быть отсортированы в соответствии с после- довательностью кодов КОИ-8, и генерирует три столбца вывода: строки, входящие только в "файл1", строки, входящие только в "файл2" и строки, входящие в оба файла. Ключ "-" означает использование стандартного файла ввода. Флаги 1, 2 и 3 подавляют печать соответствующих столбцов. Таким образом, команда "comm -12" печатает только строки, общие для обоих файлов. "Comm -23" пе- чатает только строки, которые входят в первый файл, но не входят во второй, а команда "comm -123" символизи- рует отсутствие операции. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: cmp, diff, uniq 61 АПК 00210-01 33 01-4 ИМЯ: compact - компрессия файла ФОРМАТ: compact [файл ...] ОПИСАНИЕ: Команда compact компрессирует перечисленные файлы. Если имена файлов не указаны, компрессируется информа- ция, поступающая из стандартного файла ввода, резуль- тат выдается в стандартный файл вывода. Как только считывается очередной байт, он немедленно кодируется в соответствии с текущим кодом. Этот код представляет собой оптимальный код Хаффмана для набора частот, вы- численных по уже введенной информации. Нет необходи- мости в добавлении к сжатому файлу дерева декодирова- ния, поскольку шифратор (compact) и дешифратор (uncompact) начинают работать с одного и того же сос- тояния и остаются синхронными. Более того, compact и uncompact могут работать в качестве фильтров. В частности, ... | compact | uncompact | ... Работает как очень медленная команда, не выполняющая никакой операции. Если указан параметр "файл", этот файл сжимается и ре- зультат помещается в файл с именем "файл.C", "файл" удаляется. Последние два байта сжатого файла (".C") 62 АПК 00210-01 33 01-4 указывают, что этот файл сжат. Этот код используется для предотвращения повторной компрессии. Ожидаемая степень сжатия зависит от типа исходного файла. Типичные значения степени сжатия следующие: 38% текст; 43% исходная программа на паскале; 36% исходная программа на языке Си; 19% модуль загрузки. Эти значения представляют собой процент байтов, на ко- торые уменьшен файл. ЗАМЕЧАНИЯ: Последняя часть имени файла должна содержать менее 13-ти символов, чтобы оставалось место для суффикса ".C". Каталоги не могут (и не должны) сжиматься. ДИАГНОСТИКА: Команда compact не сжимает каталоги. Выдаются также сообщения о файлах, которые не могут быть открыты, и т.п. ФАЙЛЫ: Создаваемые файлы имеют суффикс ".C". Исходные файлы удаляются (если они не были защищены). ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: uncompact, ccat 63 АПК 00210-01 33 01-4 ИМЯ: convert - преобразователь об'ектного кода ОС ЕС в a.out ФОРМАТ: convert [-e] файл1 файл2 ОПИСАНИЕ: Команда convert служит для преобразования об'ектного кода в "файл1" из формата ОС ЕС в об'ектный код форма- та ДЕМОС "файл2". -e флаг устанавливает при преобразовании перекоди- ровку кода ДКОИ в КОИ-8 для символьных имен сло- варя внешних имен ESD. Символы имени, кроме того, преобразуются в строчные буквы. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: a.out ЗАМЕЧАНИЯ: 1. Правильнее использовать "файл2" в качестве о.тип для обработки его редактором связей. 2. Не обрабатываются внешние фиктивные секции DSECT команды ассемблера DXD. 3. Не обрабатываются слабые внешние имена операто- ров ассемблера WXTRN. 4. Не обрабатывается об'ектная карта SYM. 64 АПК 00210-01 33 01-4 5. Не поддерживается операционное перемещение. 65 АПК 00210-01 33 01-4 ИМЯ: cp - создать копию файла. ФОРМАТ: cp [-i] файл1 файл2 cp [-i] файл ... справочник ОПИСАНИЕ: "Файл1" копируется в "файл2". Если "файл2" существует, режим и владелец сохраняются, в противном случае ис- пользуется режим исходного файла. Вторая форма данной команды копирует один или несколь- ко указанных файлов в "справочник" с исходными имена- ми. Команда cp отвергает запрос на копирование файла в са- мого себя. Если задан параметр -i и копирование производится в уже существующий файл, от пользователя требуется подтверждение. Если пользователь подтверждает запрос, выдавая ответ "y", команда cp продолжает работу. При выдаче любого другого символа предыдущее содержимое файла сохраняется. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: cat, pr, mv 66 АПК 00210-01 33 01-4 ИМЯ: crypt - зашифровать/расшифровать. ФОРМАТ: crypt [ключ] ОПИСАНИЕ: Команда crypt осуществляет чтение из стандартного файла ввода и запись в стандартный файл вывода. Аргу- мент "ключ" представляет собой ключ, который задает конкретное преобразование информации. Если "ключ" не задан, команда crypt требует ввод ключа с терминала, не выдавая символов на экран терминала во время ввода ключа. Две команды crypt с одним и тем же значением ключа (ключ1): crypt ключ1 <исходный >зашифрованный crypt ключ1 <зашифрованный | pr зашифруют исходный файл и, расшифровав, распечатают исходный текст. Файлы, зашифрованные с помощью crypt, совместимы с теми файлами, с которыми работает редактор ed в режиме шифрования. Защита зашифрованных файлов основана на трех факторах: 1) лежащий в основе метод должен быть трудным для разгадки; 67 АПК 00210-01 33 01-4 2) прямой просмотр пространства ключей должен быть невозможен; 3) обходные пути, позволяющие получить ключи или исходный текст, должны быть минимизированы. Команда crypt реализует однороторную шифровальную ма- шину с 256-элементным ротором. Методы борьбы с такими машинами известны, однако не очень широко. Более того, для расшифровки необходимо проделать достаточно боль- шую работу. Преобразование ключа во внутренние установки машины умышленно сделано сложным. Однако, если ключи ограни- чены, например, тремя малыми буквами, зашифрованные файлы могут быть прочитаны с затратами не более пяти минут машинного времени. Поскольку ключ является параметром команды crypt, он является потенциально видимым для пользователей, вы- полняющих команду ps или ее производную. Для уменьше- ния этой возможности crypt разрушает любую запись клю- ча сразу же после входа. Несомненно, выбор ключей и их защищенность представляют собой наиболее уязвимое место. ФАЙЛЫ: /dev/tty для напечатанного ключа ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: ed, makekey 68 АПК 00210-01 33 01-4 ИМЯ: csh - интерпретатор командного языка с Си-подобным синтаксисом. ФОРМАТ: csh [-cefinstvVxX] [параметр...] ОПИСАНИЕ: Команда csh представляет собой интерпретатор командно- го языка CSHELL, который, в отличие от языка SHELL, имеет более широкий набор встроенных команд, поддержи- вает некоторый контекст работы и имеет Си-подобный синтаксис. Функционирование csh начинается с выполнения командно- го файла ".cshrc" в регистрационном справочнике поль- зователя. Если csh используется в качестве интерпрета- тора основного командного языка, при регистрирации в системе выполняется командный файл ".login" в том же справочнике. После этого интерпретатор начинает считы- вать команды с терминала, выдавая в качестве подсказки символ "%". При завершении работы выполняется ко- мандный файл ".logout" в регистрационном справочнике пользователя. ЛЕКСИЧЕСКАЯ СТРУКТУРА: Командой в языке CSHELL считается набор параметров. Параметром является произвольная последовательность символов, не содержащая символов пробела, табуляции и 69 АПК 00210-01 33 01-4 новой строки. Первый параметр в строке рассматривается как имя команды, которую необходимо выполнить. Существует набор символов, которые имеют специальное значение в языке CSHELL, и обрабатываются особым обра- зом. Такие символы в дальнейшем будут называться мета- символами. К их числу относятся "&", "|", ";", "<", ">", "(", ")", "*" и некоторые другие. В неинтерактивном режиме символ "#" указывает на нача- ло комментария. Он теряет свое специальное значение при использовании любого из существующих механизмов экранирования. КОМАНДЫ: Простая команда представляет собой последовательность слов, первое из которых - имя выполняемой команды, а остальные передаются в качестве параметров. Последова- тельность простых команд, разделенных символами "|", образует канал межпроцессной связи (вывод предыдущей команды является вводом следующей). Цепочки команд, образующих межпроцессные каналы (конвейеры), могут разделяться с помощью символа ";", при этом они выпол- няются последовательно. В фоновом режиме, когда после- довательность команд завершается символом "&", csh может не дожидаясь окончания трансляции перейти к вы- полнению следующей команды. В таком режиме существует автоматическая защита от сигнала останова; следова- тельно, нет необходимости в использовании команды 70 АПК 00210-01 33 01-4 "nohup". Список команд, заключенный в скобки (), рассматривает- ся как простая команда, которая может являться частью конвейера. Символы "||" и "&&", используемые в ка- честве разделителей, указывают (как и в языке Си), что второй конвейер должен запускаться только в случае за- вершения первого. МЕХАНИЗМ ПОДСТАНОВКИ ПРЕДШЕСТВУЮЩИХ КОМАНД: Csh запоминает командные строки, которые вводил поль- зователь в процессе работы, и позволяет осуществлять их повторный ввод. Указателем выполнения подстановки команд является символ "!". Подстановка может начинаться в любом месте входного потока. Символ "!" теряет свое специальное значение, если он экранирован с помощью символа " также если за ним следует пробел, знак табуляции, символ новой строки, "=" или "(". Подстановка команд производится также в том случае, когда входная строка начинается символом "^". Команды нумеруются последовательно, начиная с 1. Коли- чество запоминаемых csh командных строк определяется переменной history. Ссылки на предыдущие команды из текущей команды могут быть осуществлены следующим об- разом: !N по номеру команды; 71 АПК 00210-01 33 01-4 !-n на n команд раньше относительно текущей команды; !c по первой букве команды; !?...?! по строке "...", содержащейся в некотором слове команды; !! повторное выполнение последней команды. Для выбора из команды отдельных параметров, после спе- цификации команды нужно указать ":" и определитель требуемых параметров. Слова входной строки нумеруются, начиная с 0: 0 - обычно имя команды, 1 - первый пара- метр и т.д. Основными определителями являются: 0 имя команды; n n-ый параметр; ^ первый параметр; $ последний параметр; % слово, которое соответствует (непосредственно предшествующему) образцу ?...?; х-y диапазон слов; -y соответствует "0-y";27 * выбрать все параметры, начиная с первого ("%-$"); х* выбрать все параметры, начиная с n-го ("х-$"); 72 АПК 00210-01 33 01-4 х- то же, что "х*", но не включая последний параметр "$". Символ ":" может быть опущен, если определитель начи- нается одним из символов "^", "$", "*", "-" или "%". После необязательного определителя могут указываться модификаторы. Каждому из них предшествует двоеточие ":". Определены следующие модификаторы: g применить модификацию во всех словах; h удалить имя файла, оставляя имена справочников, ведущих к нему; р распечатать новую команду, но не выполнять ее; q заключить модифицируемое слово в кавычки, пре- дотвращая его дальнейшую модификацию; r удалить расширение имени файла, указанное через точку "."; s/l/r заменить l на r. В качестве разделителя вместо "/" может быть использован любой символ.В стро- ках l и r разделитель должен экранироваться символом " ся предыдущая строка либо из l, либо из строки контекстуального поиска s в "!?s?". Если строка r пуста, то l удаляется; t удалить имена всех справочников, ведущих к файлу, оставляя имя файла; 73 АПК 00210-01 33 01-4 x то же, что и q, но разбить на слова в местах наличия пробелов, знаков табуляции и символов новой строки; & повторить предыдущую модификацию. Csh ппредоствляет удобный способ модификации последней строки. Для этих целей используется конструкция "^об- разец^замена". ПСЕВДОНИМЫ: С помощью команд alias и unalias интерпретатор csh составляет список псевдонимов, которые могут устанав- ливаться, отображаться и модифицироваться. После прос- мотра командной строки она разбивается на отдельные команды, и первое слово каждой команды проверяется (слева направо), чтобы выяснить, имеет ли оно псевдо- ним. Если имеет, то текст, который является псевдони- мом данной команды, считывается с помощью механизма history так, как если бы эта команда была предыдущей входной строкой. Полученные слова заменяют команду и список параметров. Этот механизм позволяет вводить новый синтаксис команд. ПОДСТАНОВКА ПЕРЕМЕННЫХ: После подстановки псевдонимов и грамматического разбо- ра входной строки и перед выполнением каждой команды производится подстановка переменных, обозначаемая сим- волом "$". 74 АПК 00210-01 33 01-4 Существуют следующие конструкции: $имя ${имя} Подставить значение переменной. Фигурные скобки отделяют "имя" от символов, которые к нему не относятся. Имена переменных могут содержать до 20 букв и символов подчеркивания; $имя[селектор] ${имя[селектор]} Подставить значение слова, выбранного "селекто- ром" из множества значений переменной "имя"; $#имя ${#имя} Подставить количество слов, хранящихся в пере- менной; $0 Подставить имя стандартного файла ввода. Если это имя неизвестно, возникает ошибка; $число ${число} Эквивалентно "$argv [число]"; $* Эквивалентно "$argv [*]"; С помощью модификатора ":" не могут быть произведены 75 АПК 00210-01 33 01-4 следующие подстановки: $?имя ${?имя} Подставить "1", если "имя" определено, или "0" - если не определено. $?0 Подставить "1", если стандартный файл ввода оп- ределен, или "0" - в противном случае. $$ Подставить номер процесса csh. ПОДСТАНОВКА ВЫВОДА КОМАНД: При подстановке команды, ее заключают в обратные апострофы `...`. Эта команда выполняется, а ее стан- дартный вывод разбивается на отдельные слова в местах наличия пробелов, знаков табуляции и символов новой строки, причем пустые слова отбрасываются, и этот текст затем заменяет исходную строку в "`". Внутри строк, заключенных в кавычки "...", только символ новой строки выделяет новые слова.Пробелы и символы табуляции сохраняются. При помощи подстановки вывода команды может быть соз- дана только часть слова, даже если команда выдает це- лую строку. ПОДСТАНОВКА ИМЕН ФАЙЛОВ: Если слово содержит любой из символов "*", "?", "[", 76 АПК 00210-01 33 01-4 "{" или начинается с "^ ", то в нем может быть осу- ществлена подстановка имени файла. При этом данное слово является образцом, который заменяется соот- ветствующим списком файлов, отсортированных в алфавит- ном порядке. Если в списке имен файлов не найдено ни одного соответствия заданному образцу, возникает ошиб- ка. Следующие символы имеют специальное значение: * Соответствует любой последовательности символов, в том числе пустой; ? Соответствует любому одиночному символу; [...] Соответствует любому из перечисленных символов. Пара символов, разделенная знаком "-", соот- ветствует любому символу из указанного лексичес- кого промежутка; ~ Регистрационный справочник, являющийся значением переменной home; ~имя Регистрационный справочник пользователя с именем "имя"; [a,b,...,n] Соответствует любому из перечисленных символов. Для указания самих символов "[" и "]" в списке перед ними должен ставиться символ " a{b,c,d}e 77 АПК 00210-01 33 01-4 Соответствует "abe ace ade". Использование пробе- лов не допускается. При подборе имен файлов символ ".", находящийся в на- чале имени файла или непосредственно после "/", а также символ "/" должны быть указаны явно и точно на своих местах. ВВОД/ВЫВОД Для задания файлов ввода/вывода используются следующие конструкции: <имя Использовать файл "имя" в качестве стандартного файла ввода; <<слово Считать ввод интерпретатора до строки, которая идентична указанному "слову". Полученный времен- ный файл использовать в качестве стандартного файла ввода; >имя >!имя >&имя >&!имя Использовать файл "имя" в качестве стандартного файла вывода. Содержимое файла усекается до ну- левой длины. Если определена переменная noclobber, файл не должен существовать, иначе 78 АПК 00210-01 33 01-4 возникает ошибка. Для предотвращения непреднаме- ренного разрушения файлов используются конструк- ции с "!". Конструкции, использующие "&", нап- равляют в стандартный файл вывода также диагнос- тические сообщения; >>имя >>&имя >>!имя >>&!имя Использовать файл "имя" в качестве стандартного файла вывода; выходная информация дописывается к содержимому файла "имя". Если определена пере- менная noclobber, а файл не существует, то ис- пользование конструкций, не содержащих "!", приводит к возникновению ошибки. В фоновом режиме стандартным файлом вывода по умолча- нию является пустой файл "/dev/null". Диагностика может быть выведена по каналу межпроцессной связи. Для этого используется конструкция "|&". ВЫРАЖЕНИЯ: Некоторые из встроенных команд могут содержать выраже- ния, в которых имеются операции, аналогичные операциям в языке Си, с таким же приоритетом. Эти выражения могут появляться в командах @, exit, if и while. Раз- решены следующие операции: "||", "&&", "|", "~", "&", 79 АПК 00210-01 33 01-4 "==", "!=", "<=", ">=", "<", ">", "<<", ">>", "+", "-", "*", "/", "%", "!", "^", "(", ")". Старшинство операций в этом ряду возрастает слева нап- раво; внутри следующих групп операции имеют одинаковый приоритет: == != <= >= < > << >> + - * / % В операциях сравнения "==", "!=", операндами являются строки; остальные оперируют с числами. Логическими значениями являются: 0 - "ложь", 1 (или любое число, отличное от нуля) - "истина". Все знаки операций должны отделяться от операндов пробелами. В одном сло- ве не должны встречаться два компонента выражений, за исключением случаев использования следующих знаков операций: "&", "|", "<", ">", "(", ")". Имеющиеся в csh операции присваивания аналогичны опе- рациям присваивания языка Си. К ним относятся: "=", "+=", "-=", "*=", "/=", "%=". Постфиксные операции "++" и "--" соответственно инкре- ментируют и декрементируют "имя" (например, "@i++"). В качестве простых операндов в выражениях могут ис- пользоваться команды, заключенные в фигурные скобки 80 АПК 00210-01 33 01-4 "{...}". В csh имеются операции опроса свойств файла вида "-l имя", где l может принимать следующие значения: r разрешение чтения; w разрешение записи; х разрешение выполнения; е существование; о владелец; z нулевой размер; f незашифрованный файл; d справочник. В указанном файле осуществляются подстановки перемен- ных и имен файлов. Если файл обладает требуемым свойством, то возвращается значение 1 (истина), иначе - 0 (ложь). КОМАНДЫ УПРАВЛЕНИЯ: К командам управления относятся следующие конструкции: foreach имя (слово ...) список_команд end Переменной "имя" последовательно присваиваются значения "слово ..." и выполняется "список_ко- манд". switch( строка ) 81 АПК 00210-01 33 01-4 case слово: ... breaksw ... default: ... breaksw endsw "Строка" последовательно сравнивается со всеми "словами". Если соответствие не обнаружено, вы- полнение продолжается после default. Команда breaksw приводит к тому, что выполнение продол- жается после endsw. if( выр1 ) then список_команд1 else if( выр2 ) then список_команд2 else список_команд3 endif Если значение первого выражения истинно (отлично от нуля), выполняется "список_команд1". В про- тивном случае проверяется "выражение2": если оно истинно, выполняется "список_команд2" и т.д. while( выражение ) ... end Цикл выполняется, пока истинно значение "выраже- 82 АПК 00210-01 33 01-4 ния". В операторах управления csh ключевое слово (if, else и др.) должно быть первым слово в строке. ВСТРОЕННЫЕ КОМАНДЫ: alias alias имя alias имя список_слов Первая форма распечатывает все псевдонимы. Вто- рая форма распечатывает псевдоним указанного "имени". Последняя форма определяет "спи- сок_слов" как псевдоним "имени". В "списке_слов" осуществляется подстановка команд и имен файлов. В качестве "имен" нельзя использовать "alias" и "unalias". alloc Выдает размер используемой динамической памяти, включая используемую и свободную память, а также адрес последней ячейки памяти. break Вызывает возобновление выполнения после end бли- жайшей внешней конструкции foreach или while. Если в одной строке указывается несколько команд break, разделенных точкой с запятой, то переход осуществляется через столько же уровней. breaksw Вызывает выход из команды switch, возобновляя 83 АПК 00210-01 33 01-4 выполнение после endsw. case метка: "Метка" - один из вариантов оператора switch. cd cd имя chdir chdir имя заменяет текущий справочник на справочник "имя". Если параметр отсутствует, то по умолчанию при- нимается регистрационный справочник. continue Продолжает выполнение ближайшего внешнего while или foreach. Остальные команды текущей строки выполняются. default: Метка, обозначающая вариант по умолчанию в опе- раторе switch.Должна располагаться после всех меток case. echo список_слов Указанные слова записываются в стандартный файл вывода. Символ " на новую строку. else end endif 84 АПК 00210-01 33 01-4 endsw Используются в операторах foreach, if, switch и while. ехес команда "Команда" запускается вместо csh. Работа csh за- вершается. exit exit( выр ) Производится выход из csh либо со значением пе- ременной status (первая форма), либо со значени- ем указанного выражения "выр" (вторая форма); glob список_слов Эта команда аналогична команде echo, за исключе- нием того, что при выводе слова разделяются про- белами, так как символ " goto слово Команда безусловного перехода на метку. Выполнение продолжается со строки, идущей после указанной метки. Метка должна завершаться симво- лом ":". hashstat Распечатывает статистику, определяющую, насколь- ко эффективно внутренняя таблица хэширования размещает команды. 85 АПК 00210-01 33 01-4 history Отображает список предшествующих команд. if (выр) команда Если значение указанного выражения истинно, вы- полняется "команда". Команда должна быть одна. Использование конвейеров не допускается. login login имя По команде login завершается работа csh и иници- ализируется программа init для данного дисплея. Команда может использоваться без параметра "имя" и с ним. Во втором случае сразу же будет запро- шен входной пароль пользователя. logout Прерывает работу csh. Если определена переменная ignoreeof, то сигнал конца файла <CTRL/D> игно- рируется. nice nice +число nice команда nice +число команда Первая форма устанавливает приоритет csh равным 4. Вторая форма устанавливает приоритет равным указанному числу. Последние формы выполняют ко- манду с приоритетом 4 и "число" соответственно. 86 АПК 00210-01 33 01-4 Используя конструкцию "nice -число ...", супер- пользователь может установить отрицательный при- оритет. Команда выполняется в подпроцессе csh.Использование конвейеров не допускается. nohup nohup команда Команда предотвращает реакцию csh на сигналы прерывания. При использовании без параметров действие nohup распространяется на все строки командого файла, указанные за ней. Во второй форме сигналы прерывания игнорируются только при выполнении указанной "команды". Для всех фоновых процессов, nohup выполняется автоматически. onintr onintr - onintr метка Управляет реакцией csh на прерывания. Первая форма восстанавливает стандартную реакцию csh на прерывания, которая заключается в завершении вы- полнения командных файлов csh или возврате в ин- терактивный режим. Вторая форма вызывает игнори- рование любых сигналов прерывания. Последняя форма при получении сигнала прерывания вызывает выполнение команды "goto метка". rehash 87 АПК 00210-01 33 01-4 Создает хэш-таблицу команд, содержащихся в спра- вочниках, которые указаны в переменной path. repeat счетчик команда Повторяет выполнение "команды" "счетчик" раз. Стандартные файлы ввода/вывода задаются только один раз. set set имя set имя=слово set имя[индекс]=слово set имя=(список_слов) Первая форма данной команды выводит значения всех переменных csh. Переменные, которые имеют несколько значений, выводятся в виде списка, заключенного в скобки. Вторая форма присваивает указанному "имени" строку нулевой длины. Третья форма присваивает "имени" значение "слова". Чет- вертая форма присваивает компоненту имени с но- мером "индекс" значение "слова". Последняя форма присваивает "имени" значения из "списока_слов". setenv setenv имя значение Первая форма выводит значения переменных среды процесса, вторая их устанавливает. shift 88 АПК 00210-01 33 01-4 shift переменная Члены переменной argv сдвигаются влево, при этом argv[1] (левый элемент списка) отбрасывается. Если элемент списка не определен или имеет менее одного значения, то возникает ошибка. Вторая форма команды выполняет эти же действия над ука- занной "переменной". source имя Csh считывает команды из файла "имя". Командa source может быть вложенной.Если глубина вложе- ния слишком велика, то может не хватить дескрип- торов файлов. Ошибка в команде source на любом уровне прерывает выполнение остальных вложенных команд source. Ввод команд, произведенный в про- цессе выполнения команды source не фиксируется в списке предшествующих команд. time time команда При отсутствии параметров сообщает время, затра- ченное интерпретатором csh и порожденными про- цессами. Если параметр задан, выдается время, затраченное указанной "командой". umask umask значение Маска доступа к файлу сообщается (первая форма) 89 АПК 00210-01 33 01-4 или устанавливается равной указанному значению (вторая форма). Значение маски указывается в восьмеричном коде. Самыми распространенными зна- чениями маски являются 022 (по умолчанию), кото- рое задает любой доступ для пользователей своей группы и доступ для чтения и выполнения другим пользователям, и 002, определяющее любой доступ, за исключением записи, для пользователей своей группы и всех прочих; unalias образец Все псевдонимы, имена которых соответствуют ука- занному образцу, отбрасываются. Следовательно, команда "unalias *" удаляет все псевдонимы. Если псевдонимы не удалились, это не считается ошиб- кой.Использование команды без параметров приво- дит к возникновению ошибки. unhash Запрещает использование хэш-таблицы для ускоре- ния нахождения выполняемых программ. unset образец Все переменные, имена которых соответствуют ука- занному образцу, удаляются. Таким образом, ко- манда "unset *" удаляет все переменные, опреде- ленные командой set. Попытка удалить неопреде- ленную переменную не приводит к возникновению ошибки. 90 АПК 00210-01 33 01-4 wait Происходит ожидание всех порожденных процессов. В интерактивном режиме сигнал прерывания может прервать и выполнение команды wait.При этом csh печатает имена и номера всех незавершенных про- цессов. @ @имя=выражение @имя[индекс]=выражение Первая форма распечатывает значения всех пере- менных csh. Вторая форма присваивает параметру "имя" значение "выражения". Если часть выражения содержит символы "<", ">", "&" или "|", то она должна быть заключена в круглые скобки (...). Третья форма присваивает компоненту"имя" с номе- ром "индекс" значение "выражения". "Имя" и его компонент с номером "индекс" должны существо- вать. ВНУТРЕННИЕ ПЕРЕМЕННЫЕ: argv Определяет значения параметров csh. К ней приме- нимы подстановки позиционных параметров (напри- мер, "$1" заменяется на "$argv[1]"). child Номер процесса.Выводится при запуске параллель- ного процесса. По завершении процесса значение переменной сбрасывается (unset). echo Устанавливается, если в командной строке указы- 91 АПК 00210-01 33 01-4 вается флаг "-х". Вызывает печать каждой команды и ее параметров перед выполнением. Все расшире- ния выполняются перед выводом. history Определяет размер списка предшествующих команд. Слишком большое значение переменной может при- вести к нехватке памяти. Оптимальное число - 22 строки. home Определяет имя регистрационного справочника пользователя. ignoreeof Предотвращает случайное завершение csh при при- еме сигнала "конец файла" <CTRL/D>. mail Содержит имена файлов, которые проверяются ин- терпретатором csh на наличие почты после завер- шения каждой команды. noclobber Устанавливает защиту файлов от случайного разру- шения и обеспечивает существование файлов вывода при использовании конструкции ">>". noglob Запрещает расширение имен файлов. nonomatch Если расширение имен файлов не соответствует ни 92 АПК 00210-01 33 01-4 одному из существующих файлов, то при установке данной переменной возвращается исходный образец. Однако, если исходный образец неверен (например, "есно ["), то возникает ошибка. path Определяет список имен справочников для поиска выполняемых команд. prompt Определяет строку-приглашение интерпретатора для ввода команд. Если в этой строке присутствует указатель "!", которому не предшествует символ " Стандартными значениями являются "%" - для обыч- ного пользователя и "#" - для суперпользователя. shell Если командный файл является выполняемым (имеет- ся бит "x") и начинается с символа "#", то он выполняется интерпретатором csh.Если символ "#" отсутствует - интерпретатором sh. Переменная shell определяет файл, который должен выполнять интерпретатор csh. status Определяет код завершения последней команды (0 - при успешном выполнении команды, 1 - при неус- пешном). time Хронометрирует команды, если их действие продол- жалось более указанного времени. 93 АПК 00210-01 33 01-4 verbose Устанавливается флагом "-v" и вызывает распечат- ку каждой командной строки перед ее выполнением. ФЛАГИ CSH: -c Считать команду из единственного параметра, ука- занного сразу после "-c". Все остальные параметры размещаются в переменной argv; -e Прекратить работу csh, если любая вызванная ко- манда выполнена неуспешно или если код заверше- ния команды не равен нулю; -f Запретить чтение файла ".cshrc" для обеспечения более быстрого запуска интерпретатора csh; -i Устанавливает интерактивный режим работы ин- терпретатора; -n Осуществляет только синтаксическую проверку команд; -s Считывать входную информацию из стандартного файла ввода; -t Считывать и выполнять только одну командную строку. Эта строка может содержать в конце символ продолжения строки " -v Вызывает установку переменной verbose, в резуль- тате чего вводимые команды распечатываются после 94 АПК 00210-01 33 01-4 подстановки предшествующих команд; -V Вызывает установку переменной verbose перед вы- полнением файла ".cshrc"; -x Вызывает распечатку команд перед их выполнением; -X Устанавливает флаг "-x" при интерпретации файла ".cshrc". ОБРАБОТКА СИГНАЛОВ: Интерпретатор команд обычно игнорирует сигналы выхода (quit). Команды, выполняемые в фоновом режиме, обычно игнорируют сигналы прерывания (interrupt) и выхода. В обычном режиме эти сигналы имеют значения, наследуемые от предыдущего процесса. Реакция csh на прерывания может устанавливаться командой onintr. Интерпретаторы, устанавливаемые непосредственно при регистрации поль- зователя в системе, воспринимают сигнал завершения (terminate); в остальных случаях состояние сигнала прерывания передается из текущего процесса в порожда- емый. Во время считывания файла ".logout", сигналы прерывания не воспринимаются. ФАЙЛЫ: ^/.cshrc считывается csh в начале выполнения. ^/.login считывается csh после ".cshrc" при регистрации. ^/.logout считывается csh при выходе. 95 АПК 00210-01 33 01-4 /bin/sh стандартный shell для командных файлов, которые начинаются не с "#". /tmp/sh* временный файл для "<<". /dev/null источник для пустого файла. /etc/passwd регистрационный справочник для "^имя". ОГРАНИЧЕНИЯ: Слова не могут быть длинее, чем 512 символов. Коли- чество символов в параметрах зависит от системы. Предел составляет от 512 до 5120 символов. Количество параметров команды, включающих расширения имен файлов, ограничено 1/6-ой числа символов, разрешенных в списке параметров. При подстановке команд количество подстав- ляемых символов не должно превышать числа, указанного в списке параметров. Для предотвращения зацикливания csh ограничивает количество подстановок псевдонимов в одной строке до 20-ти. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: sh, environ. ЗАМЕЧАНИЯ: Команды управления должны подвергаться грамматическому разбору, а не распознаваться в качестве встроенных команд. Это позволило бы размещать их в любом месте, об'единять с помощью символа "|", а также использовать с метаобозначениями "&" и ";". 96 АПК 00210-01 33 01-4 Команды, содержащиеся внутри циклов с подсказкой "?", не помещаются в список предшествующих команд. Должна существовать возможность использования модифи- каторов ":" при выводе подстановок команд. В макровы- зовах "$" должно допускаться более одного модификатора ":". Некоторые команды не должны изменять значения перемен- ной status, иначе она будет так часто меняться, что может оказаться почти бесполезной. Установка бита 0200 в переменной status при ненормальном завершении свиде- тельствует об ошибке. Чтобы сохранить возможность восстановления после не- удачного выполнения команд ехес, новая команда насле- дует несколько открытых файлов, отличных от стан- дартных файлов ввода, вывода и диагностических сообще- ний. Если файлы ввода/вывода заданы и новая команда не закрывает их, то некоторые файлы напрасно остаются открытыми. 97 АПК 00210-01 33 01-4 ИМЯ: ctags - построение файла ссылок для программ на Си ФОРМАТ: ctags [-auw] файл ... ОПИСАНИЕ: Команда ctags создает таблицу ссылок (файл с именем tags) для программ на языке Си, записанных в указанных файлах. Файл ссылок содержит указания о местонахожде- нии определенных об'ектов (в данном случае - функций) в группе файлов. Каждая строка файла ссылок содержит: имя функции, имя файла (в котором она определена), ре- гулярное выражение, используемое для поиска определе- ния функции. Эти данные приводятся в отдельных полях строки и разделяются пробелами или символами табуля- ции. В командной строке могут указываться следующие ключи: -a Приводит к тому, что результат дописывается в файл tags; -x В этом режиме ctags выдает для каждой функции ее имя, номер строки в которой она определена, имя файла и содержимое строки с определением данной функции. Результат выдается в стандартный файл вывода; -v Получение списка имен функций с указанием стра- ниц на которых они определены (предполагается, 98 АПК 00210-01 33 01-4 что страница содержит 64 строки); -u Вызывает обновление признаков для указанных файлов, т.е. все ссылки на них удаляются, и к файлу добавляются новые значения. Подразумевает- ся задание ключа "-a"; -w Подавляет предупредительную диагностику. Имя головной программы (main) обрабатывается особым образом. Вместо имени функции создается некоторое ус- ловное имя, которое формируется путем добавления "M" к имени файла и удаления суффикса ".c", если он имеется, а также удаления первых компонентoв полного имени. Это позволяет использовать ctags в каталогах с более, чем одной программой. ФАЙЛЫ: tags выходной файл ссылок. 99 АПК 00210-01 33 01-4 ИМЯ: date - печать даты. ФОРМАТ : date ОПИСАНИЕ: Выдается текущая дата и время в виде ггммддччмм. Поле "гг" задает последние две цифры года, "мм" - месяц, "дд" - день, "чч" - час (по 24-часовой системе), вто- рое "мм" задает минуты. ФАЙЛЫ ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: utmp 100 АПК 00210-01 33 01-4 ИМЯ: dc - настольный калькулятор. ФОРМАТ: dc [файл] ОПИСАНИЕ: Представляет собой пакет для выполнения арифметических операций с произвольной точностью. Обычно он оперирует с десятичными целыми числами, однако можно задавать входное и выходное основания системы счисления и коли- чество обрабатываемых дробных цифр. С точки зрения об- щей структуры dc представляет собой стековый калькуля- тор (с использованием обратной польской записи). Если задан параметр, ввод осуществляется из указанного файла (до тех пор, пока он не закончится), а затем - из стандартного файла ввода. Распознаются следующие конструкции: число значение числа помещается в стек. Число представляет собой непрерывную строку цифр 0-9. Ему может предшествовать символ подчеркивания "_", который служит для ввода отрицательных чисел. Числа могут содержать десятичную точку; + - / * % ^ Два верхних значения стека складываются (+), вы- читаются (-), умножаются (*), делятся (/), опре- деляется остаток (%) или возводятся в степень (^). Два этих значения выталкиваются из стека; 101 АПК 00210-01 33 01-4 на их место в стеке помещается результат. Дроб- ная часть в показателе стека игнорируется; sx Вершина стека извлекается и запоминается в ре- гистре с именем "x", где в качестве "x" может использоваться любой символ. Если буква S заг- лавная, "x" рассматривается как стек, и в него помещается данное значение; lx Значение регистра "x" помещается в стек. Содер- жимое регистра "x" не изменяется. Начальные зна-