label Переход на команду ":" с меткой label. Если "label" отсутствует, то переходят на конец прог- раммы редактирования. (2)c text Изменить. Команда "с" удаляет строки, выбранные по заданной области действия, и замещает их строками аргумента text. (2)d Уничтожить рабочую область. (2)D Уничтожить начальный сегмент рабочей области до первой escape-последовательности "новая строка". (2)g Заменить содержимое рабочей области содержимым сохраняемого буфера. (2)G Добавить содержимое сохраняемого буфера к содер- жимому рабочей области. (2)h Заменить содержимое сохраняемого буфера на со- держимое рабочей области. (2)H Добавить содержимое рабочей области к сохраня- емому буферу. (1)i text 116 AПK.00210-01 33 01-5 Ввести. Поместить text в стандартный файл выво- да. (2)n Скопировать рабочую область в стандартный файл вывода. Заменить рабочую область следующей вво- димой строкой. (2)N Добавить следующую вводимую строку к рабочей об- ласти, содержащей символы "'0. Номер текущей строки изменится. (2)p Напечатать. Записать рабочую область в стан- дартный файл вывода. (2)P Записать начальный сегмент рабочей области до первого символа новой строки в стандартный файл вывод. (1)q Выйти. Перейти на конец программы редактирова- ния. (1)r rfile Прочесть содержимое rfile. Поместить его в ре- зультирующий файл перед прочтением новой вводи- мой строки. (2)s/ регулярное выражение / замена / флаги Подставить строку замены из регулярного выраже- ния вместо соответствующих образцов в рабочую область. Как и в редакторе ed , вместо символа '/' может стоять любой символ. Количество флагов 117 AПK.00210-01 33 01-5 может быть любым. Они имеют следующие значения: g Глобальный. Подставить вместо всех вхожде- ний несовпадающих регулярных выражений, а не только вместо первого; p Распечатать рабочую область при условии, что подстановка была выполнена; w file Записать. Если была проведена замена, до- бавить к file рабочую область; (2)t label Проверить. Если после самого последнего чтения или исполнения команды t была проведена любая подстановка перейти на команду ":" с меткой label. Если метка отсутствует, перейти на конец программы редактирования; (2)w file Записать. Добавить рабочую область к file; (2)x Поменять содержимое рабочей области на содержи- мое сохраняемого буфера; (2)y/строка1/строка2/ Преобразовать. Заменить все вхождения символов, образующих строку1, на соответствующие символы из строки2. Длины строки1 и строки2 должны сов- падать; 118 AПK.00210-01 33 01-5 (2)! команда Отрицание. Применение команды отрицания "!" при- водит к тому, что следующая за ней команда (или группа команд, если командой является {...} ), записанная на одной с ней строке, применяется только к тем строкам, которые не соответствуют указанной области действия; (0):метка По этой команде никаких действий не производит- ся. При этой команде стоит метка на которую пе- реходят по командам t и b; (1)= Равенство. По команде "=" в стандартный файл вы- вода записывается номер строки, имеющей указан- ную при команде область действия; (2){ Исполнить следующие команды до символа } только после выбора рабочей области. Пустая команда пропускается. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : ed, grep, awk, lex 119 AПK.00210-01 33 01-5 ИМЯ: send - передать задание на обработку в ОС ЕС ФОРМАТ: send [-ключи] [файл ...] gath [-ключи] [файл ...] ОПИСАНИЕ: Командой send формируется и пересылается файл, содер- жащий задание для ОС ЕС. Задание должно быть оформлено в соответствии требований ЯУЗ ОС ЕС. Пересылка файла задания командой send использует механизм моделирова- ния устройств единичных записей методом накопления, режимы действия которого устанавливаются командой МВМ SPOOL. Таким образом созданный файл команда send пер- форирует на виртуальном перфокарточном выводе командой vmpunch в файл накопления для ВМ ОС ЕС. Состояние задания для ОС ЕС можно получить посредством использования команды st. Команда send обеспечивает файл задания в виде сборного вводного потока из нескольких источников ввода. Воз- можными источниками ввода являются: - обычные файлы ДЕМОС; - стандартный ввод; - выводные файлы команд ДЕМОС. 120 AПK.00210-01 33 01-5 Формируемый вводной поток направляется send во времен- ный файл, в котором после замены и подстановки пере- менных содержится собственно задание ОС ЕС. Указание действующих опций команды send, источников ввода, а также действительных значений переменных в образах карт файла задания осуществляется с помощью внутренних команд. Строки, начинающиеся с ~, интерпретируются как внутренние команды, контролирующие выполнение send. Они могут устанавливать, или повторно устанавливать список действующих опций, определять зaмeны пepeмeнныx, oткpывaть новые источники ввода внутри те- кущего источника. send управляется следующими внутренними командами: ^-flags список опций устанавливает режимы функционирова- ния send; ^+flags список опций переустанавливает режимы, ранее ус- тановленные для send; ^+:promt распечатать подсказку на терминале; ^-:promt pacпeчaтaть пoдcкaзкy, тoлькo если в качестве стандартного ввода распределен терминал; ^!command 121 AПK.00210-01 33 01-5 выполнить указанную команду ДEMOC, вызвaв интepпpeтaтop SHELL. По умолчанию в качестве файла стандартного ввода определяется /dev/null. Стандартный вывод команды ДЕМОС определяется в качестве ввода команды send; ^^comment используется для возможности комментировать программу, не попадает в формируемый командой send ввoднoй пoтoк; ^=:keyword;default результатом обработки этой внутренней команды является распределение терминала в качестве файла ввода, в целях использовать вводную строку в виде действительного значения ключевого пара- метра, имя которого указано в команде. Принима- ется значение пo yмoлчaнию, ecли ввoдитcя пycтaя cтpoкa; ^keyword=string замена переменной в ключeвoм oпepaндe; ^file распределить в качестве ввода файл с указанным именем для формирования вводного потока send; ^*file распределить в качестве ввода файл с указанным именем, не производя трансляцию регистра или за- мещение ключевого слова и считая строки с внут- 122 AПK.00210-01 33 01-5 ренними командами обычным текстом. Единственной обработкой данных будет проверка на превышение каждой строкой мaкcимaльнoгo paзмepa; ^?file распределить в качестве ввода файл с указанным именем не производя трансляцию регистра или за- мещение ключевого слова и считая строки с внут- ренними командами обычным текстом. Единственной обработкой данных будет их блокирование в 80-бaйтныe зaпиcи; ^==keyword;n передать следующие n строк из управляющего файла в вводной поток, если не введено имя переменного ключевого параметра, или если это имя введено, а с терминала, распределенного в качестве источни- ка значений переменных, вводится пустая строка. n по умолчанию принимает знaчeниe=1; -uUSER имя пользователя ДЕМОС, которому распределяются выводные файлы (по умолчанию используется имя пользователя, пославшего кoмaндy send); -cLINK имя линии в ПДП, на которой распределяется вы- водной файл (текущее имя по yмoлчaнию 'COMPLEX 1'); 123 AПK.00210-01 33 01-5 -l распределить файл стандартного вывода и отобра- зить на нем образы карт файла зaдaния; -q не передавать в файле задания операторы ЯУЗ OC EC; -f произвести трансляцию cтpoчныx бyкв в пpoпиcныe; -t воспроизвести в распечатке генерацию операторов ЯУЗ ОС ЕС перед и после зaмeщeния; -к выключить замещение ключевых слов для нeyпpaвля- ющиx cтpoк; -r выполнить перекодировку кoдa KOИ-8 в ДKOИ; -е стереть все предыдущие oпpeдeлeния ключeвoгo cлoвa; -i нe интepпpeтиpoвaть строки внутренних команд во включаемых источниках, считая их текстом. Пре- дупреждение: установленный флаг не пoдлeжит пepeycтaнoвкe; -s произвести замещение ключевого слова перед интepпpeтaциeй yпpaвляющиx cтpoк; -d вывести на дисплей текущие определения ключевого слова (используемые пepвoнaчaльнo для oтлaдки). Командные строки (начинающиеся с ^) в действующем по умолчанию peжимe +i интepпpeтиpyютcя в качестве команд управления работой send. Флаг -s обеспечивает опережа- 124 AПK.00210-01 33 01-5 ющую замену ключевых cлoв oтдeлeнию и интepпpeтaции внутренних команд send. send обычно не содержит специ- альных символов в командных строках. Однако они допус- каются. Тогда подсказки, ключевые слова, значения по умолчанию и строки замены, содержащие специальные сим- волы должны заключаться в кавычки (" "). send обеспечивает гибкость формирования операторов ЯУЗ ОС ЕС на основе составленных заготовок с помощью меха- низма подсказки и определения ключевых слов. Обычно send вызывается в командном файле SHELL или в програм- ме C. В программе производится сборка определений клю- чевых слов в файл, а затем вызывается send с передачей имени файла, содержащего эти определения. Файл опреде- лений ключевых слов остается активным на протяжении обработки всего входного потока. Так что сканированием выявляются строки с ключeвыми cлoвaми, кoтopым опреде- лены значения. Несоответствующие символы выводятся в том виде, в котором они находятся (или переводятся в верхний регистр, если установлен флаг -f). Ключевым параметром является произвольная строка символов в КОИ-8, для которой была определена строка замещения. Для наглядности рекомендуется выделять переменные клю- чевые параметры лидирующим амперсандом (&), хотя это не обязательно. Обработкой send переменные ключевые параметры заменя- ются соответствующей строкой замещений, которая затем посимвольно выводится. Проверка размера строк (напри- 125 AПK.00210-01 33 01-5 мер по ^*file) откладывается до окончания производства в ней всех замещений. Замещение ключевого слова может быть временно выключе- но путем установки флага -к. Если происходит переопре- деление ключевого слова, замещается значение замеще- ния. Предыдущие определения ключевого слова могут быть полностью стерты путем использования флага -e. send не проверяет синтаксис генерируемых операторов ЯУЗ. Однако она проверяет, чтобы размер строки текста после замещения не превышал 80 байтов. Другими процедурными ошибками являются: ошибки открытия и за- писи в файлы, а также аномальные выходы из SHELL. Ошибки собираются в файл диагностики, а о представле- нии входного потока заданий на обработку в ОС ЕС send сигнализирует на терминал утвердительным сообщением. Когда команда вызывается под именем gath она устанав- ливает флаг -lq. Результат выполнения заданий в ОС ЕС можно возвратить в ДЕМОС, используя команду demsend. Листинг операторов ЯУЗ можно возвратить в ДЕМОС, Используя карту DEMROUTE. ФАЙЛЫ: usr/spool/send * временный файл для формирования входного потока. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: sh, st, vmread, demsend 126 AПK.00210-01 33 01-5 ДИАГНОСТИКА: Отмечается превышение строки входного потока 80 симво- лов, после подстановки значение переменной ключевого параметра. Выводится предложение: ввести символ y для распечатки каких-либо ошибок. 127 AПK.00210-01 33 01-5 ИМЯ: sendmvt - скопировать файл ДЕМОС в набор данных ОС ЕС. ФОРМАТ: sendmvt [демос_файл [ос_ес_файл [файл_вывода]]] ОПИСАНИЕ: sendmvs позволяет пользователю копировать файл ДЕМОС в последовательный набор данных или раздел библиотеки ОС ЕС. Это осуществляется формированием задания копи- рования и передачей его в среду пакетной обработки ОС ЕС. Параметры команды sendmvt используются в командных строках, управляющих заменой переменных в ключевых пapaмeтpax oпepaтopoв ЯУЗ формируемого задания. Способ их задания может быть явным, в составе команды, или они вводятся в ответ на подсказку. Имя "ос_ес_файл" может быть простым или составным, на основе требований спецификации имен наборов данных ОС ЕС. Если файл ДЕМОС должен стать разделом библиотечно- го набора данных, имя раздела указывается за именем набора в кавычках. Копирование осуществляется как в уже существующий набор данных, так и новый набор данных. Поэтому выда- ется запрос существует-ли уже набор ОС ЕС. Если вво- дится y, то считается, что набор уже сущетвует и ката- логизирован в системе ОС ЕС. На ответ n, означающий 128 AПK.00210-01 33 01-5 создание вновь набора, выдается подсказка о необходи- мости ввести информацию характеристик будущего набора. "файл_вывода" является именем файла ДЕМОС. Этот файл будет использоваться утилитой vmread для вывода ре- зультатов выполнения задания копирования. ФАЙЛЫ: /usr/lib/model/sendmvt образец задания для ОС ЕС /tmp/sendmvt.* вpeмeнный yпpaвляющий фaйл send ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:re send ,vmread 129 AПK.00210-01 33 01-5 ИМЯ: sh, for, case, if, while, :, ., break, continue, cd, eval, exec, exit, export, login, newgrp, read, readonly, set, shift, times, trap, umask, wait - ко- мандный язык. ФОРМАТ: sh [-ceiknrstuvx] [пар] ... ОПИСАНИЕ: Команда sh вызывает интерпретатор языка управления за- даниями SHELL, который является основным языком обще- ния пользователя с системой. Кроме того SHELL очень широко применяется и в качестве языка разработки прог- рамм. КОМАНДЫ: Простая команда представляет собой последовательность слов, разделенных "пробелами" (пробелами, знаками та- буляции или символами новой строки). Первое слово оп- ределяет имя команды, которая должна быть выполнена. Остальные слова передаются в качестве параметров вызы- ваемой команды. Имя команды является нулевым парамет- ром . "Значением" простой команды является ее код за- вершения, если она выполнена успешно, или 200+код - в противном случае. Несколько команд, разделенных символом "|", представ- ляют собой канал межпроцессной связи. Информация, вы- 130 AПK.00210-01 33 01-5 даваемая в стандартный файл вывода одной командой, может передаваться другой команде в качестве стан- дартного файла ввода. При этом создается цепочка про- цессов - конвейер. Каждая команда выполняется как от- дельный процесс; sh ждет окончания трансляции послед- ней из выполняемых команд. Список_команд представляет собой последовательность из одной или нескольких простых команд, разделенных сим- волами ";", "&", "&&" или "||", и может заканчиваться символами ";" или "&". Символы ";", "&" и "&&", "||" попарно имеют одинаковый приоритет, однако, приоритет пары "&" и "|" ниже, чем у "&&" и "||". Точка с запя- той, стоящая в конце списка_команд, вызывает последо- вательное выполнение указанных команд; амперсанд ука- зывает на то, что следующая команда может быть выпол- нена без ожидания завершения предыдущей (фоновый про- цесс). Символ "&&" ("||") разрешает выполнение после- дующей команды только в том случае, если код заверше- ния предыдущей равен нулю (не равен нулю). В качестве разделителей в списках команд вместо точки с запятой могут использоваться символы новой строки. Код завершения списка_команд равен значению кода за- вершения последней простой команды списка. Последовательность команд можно записать в файл и вы- полнить, указав имя этого файла. Далее перечислены ос- новные конструкции командного языка sh. 131 AПK.00210-01 33 01-5 for имя [in слово ...] do список_команд done При каждом повторении цикла for "имя" устанавли- вается на следующее значение в списке "слово ...". Если конструкция "in слово ..." отсутству- ет, то по умолчанию предполагается "in $@" (т.е. цикл выполняется один раз для каждого заданного параметра). case слово in [обр1 [|обр2]...) список_команд;;] ... esac При обнаружении соответствия "слова" одному из образцов, выполняется заданный "список_команд". Образец "*" соответствует любой строке. if список_команд1 then список_команд2 [elif список_команд3 then список_команд4] [else список_команд5] Если код завершения "списка_команд1" равен нулю, выполняется "список_команд2", иначе - "спи- сок_команд3" и, если его код завершения равен нулю, выполняется "список_команд4". В противном случае выполняется "список_команд5". 132 AПK.00210-01 33 01-5 while список_команд1 [do список_команд2] done Если код завершения "списка_команд1" равен нулю, выполняется "список_команд2" и цикл повторяется, иначе - выполнение цикла заканчивается. until список_команд1 [do список_команд2] done Если код завершения "списка_команд1" не равен нулю, выполняется "список_команд2" и цикл повто- ряется, иначе - выполнение цикла заканчивается. (список_команд) Выполнить "список_команд", запустив sh в ка- честве подпроцесса. {список_команд;} выполнить "список_команд". К зарезервированным словам интерпретатора sh относятся следующие слова: "if", "then", "else", "elif", "fi", "case", "in", "esac", "for", "while", "until", "do", "done", "{", "}". Они распознаются только в том слу- чае, если являются первым словом команды и не заключе- ны в кавычки. ПОДСТАНОВКА РЕЗУЛЬТАТОВ ВЫПОЛНЕНИЯ КОМАНД: 133 AПK.00210-01 33 01-5 Если команда заключена в обратные апострофы (``), она выполняется и замещается в командной строке результа- том своего выполнения. Этот результат может использо- ваться как часть слова или как целое слово; символы новой строки отбрасываются. ПОДСТАНОВКА ЗНАЧЕНИЙ ПАРАМЕТРОВ: Символ "$" указывает на выполнение подстановки значе- ний параметров. Команда set присваивает значения пози- ционным параметрам. Переменные устанавливаются следу- ющим образом: имя = значение [имя = значение] ... ${параметр} "Параметр" может быть трех видов: 1) последова- тельность букв, цифр или символов подчеркивания (т.е. определенное "имя"), 2) цифра, 3) один из символов * @ # ? - $ !. В результате выполнения данного макровызова осуществляется подстановка значения параметра (если оно определено). Фигур- ные скобки используются только в том случае, ес- ли после "параметра" следует буква, цифра или символ подчеркивания, не являющиеся частью его имени. Если "параметр" представляет собой цифру, то он считается позиционным. Если "параметром" является символ * или @, подставляются значения всех позиционных параметров (кроме 0), разделен- 134 AПK.00210-01 33 01-5 ные пробелами. ${параметр-слово} Если "параметр" определен, подставить его значе- ние, иначе подставить "слово". ${параметр=слово} Если "параметр" не определен, присвоить ему зна- чение "слова" и выполнить подстановку этого зна- чения. Значения позиционных параметров таким способом определяться не могут. ${параметр?слово} Если "параметр" определен, подставить его значе- ние; иначе напечатать "слово" и прекратить вы- полнение командного файла. Если "слово" от- сутствует, печатается стандартное диагностичес- кое сообщение. ${параметр+слово} Если "параметр" определен, подставить "слово", в противном случае ничего не подставлять. В приведенных конструкциях команда, определяемая "словом", не будет выполняться, если "слово" не явля- ется подставляемым значением. (Таким образом, в приме- ре "echo {d-`pwd`}" команда pwd будет выполняться только в том случае если параметр d не определен). Следующие "параметры" автоматически определяются ин- терпретатором sh: 135 AПK.00210-01 33 01-5 # Количество позиционных параметров; - Ключи, которые вводятся при вызове или с помощью команды set; ? Код завершения последней выполненной команды; $ Номер текущего процесса; ! Номер процесса последней фоновой команды. Следующие "параметры" используются, но не определяются интерпретатором: HOME Параметр содержит полное имя справочника (по умолчанию - имя регистрационного справочника) для команды cd, вызываемой без параметров; PATH Список имен справочников, в которых производится поиск команд, отсутствующих в текущем справочни- ке; MAIL Если эта переменная определяет имя файла для приема почты, то sh будет информировать пользо- вателя о поступлении почты в указанный файл; PS1 Подсказка интерпретатора при вводе команды, по умолчанию "$"; PS2 Подсказка интерпретатора для продолжения ввода (если команда не была завершена на предыдущей строке), по умолчанию ">"; 136 AПK.00210-01 33 01-5 IFS Символы-разделители командной строки; обычно пробел, знак табуляции и символ новой строки. ИНТЕРПРЕТАЦИЯ РАЗДЕЛИТЕЛЕЙ: В строках, полученных после подстановки значений пара- метров и результатов выполнения команд, осуществляется поиск символов-разделителей (определенных в $IFS). В местах нахождения таких символов строки разбиваются на отдельные параметры. Пустые параметры, определенные явно (" " или ' '), сохраняются. Пустые строки, полу- ченные в результате выполнения параметров, у которых нет значений, отбрасываются. ГЕНЕРАЦИЯ ИМЕН ФАЙЛОВ: После подстановок и интерпретации символов- разделителей в каждом слове команды осуществляется поиск символов *, ?, и [. Если встречается один из этих символов, то данное слово считается образцом и заменяется соответствующим списком имен файлов, распо- ложенных в алфавитном порядке. Если образцу не соот- ветствует ни одно из указанных имен файлов, то это слово остается неизменным. Символ "." в начале имени файла должен указываться явно. * Соответствует любой строке, в том числе пустой; ? Соответствует любому одиночному символу; [...] Соответствует любому из перечисленных символов. 137 AПK.00210-01 33 01-5 Пара символов, разделенная символом "-", соот- ветствует любому символу из указанного лексичес- кого промежутка. ЭКРАНИРОВАНИЕ: Следующие символы имеют специальное значение для ин- терпретатора sh и вызывают прерывание выполнения ко- манды, если они не были экранированы: ";", "&", "(", ")", "|", "<", ">", новая_строка, пробел, табуляция. Символ может быть экранирован, если ему предшествует . Для записи длинных конструкций более чем в одной строке, специальное значение символа новой строки "0 отменяется. Все символы, заключенные в апострофы (' '), за исключением самого апострофа, являются экрани- рованными. Подстановка значений параметров и результа- тов выполнения команд выполняется внутри кавычек (" "). Символ экранирует символы , `, " и $. "$*" эквивалентно "$1 $2 ..." "$@" эквивалентно "$1" "$2" ... . ПОДСКАЗКИ: В интерактивном режиме, перед считыванием команды, sh печатает значение переменной PS1 (по умолчанию - $). Если введенная строка содержит синтаксически незавер- шенную конструкцию, то для продолжения ввода интерпре- татор выдает в качестве подсказки значение переменной PS2 (по умолчанию - символ >). 138 AПK.00210-01 33 01-5 ВВОД-ВЫВОД: Для задания файлов ввода/вывода используются специаль- ные конструкции. Они могут находиться в любом месте простой команды. Перед использованием "слова" или "цифры" выполняются все необходимые подстановки. <слово Файл "слово" назначается стандартным файлом вво- да (дескриптор файла 0). >слово Файл "слово" назначается стандартным файлом вы- вода (дескриптор файла 1). Если файл не су- ществует, он создается; в противном случае он усекается до нулевой длины. >>слово Файл "слово" назначается стандартным файлом вы- вода. Если файл существует, выводимая информация добавляется к его содержимому; в противном слу- чае файл создается. <<слово Ввод осуществляется до тех пор, пока не встреча- ется последовательность символов "слово". Полу- ченный локальный файл является стандартным файлом ввода. Если какой-либо символ "слова" эк- ранирован, не производится никакой интерпретации символов локального файла; в противном случае 139 AПK.00210-01 33 01-5 производится подстановка значений параметров и результатов выполнения команд, символ новой строки игнорируется, а знак используется для экранирования символов , $, ` и первого символа "слова". <&цифра Информация, записываемая в файл с дескриптором "цифра", передается в стандартный файл вывода. >&цифра Стандартным файлом ввода является файл с дескриптором "цифра". <&- Стандартный файл ввода закрыт на запись. >&- Стандартный файл вывода закрыт на чтение. Если какой-либо из указанных конструкций предшествует цифра, то дескриптор создаваемого файла определяется этой цифрой (вместо 0 или 1 по умолчанию). ВСТРОЕННЫЕ КОМАНДЫ: Встроенные команды практически не отличаются по своим своиствам от остальных команд системы, за исключением того, что для них обычно нельзя переопределить стан- дартные файлы ввода/вывода. : Команда не производит никаких действий, за исключением подстановки значений макроперемен- ных. Код завершения равен нулю. 140 AПK.00210-01 33 01-5 . файл Выполнить командный "файл" в рамках текущего процесса. cd [справочник] Об'явить указанный "справочник" текущим. Если параметр не задан, в качестве имени справочника используется значение макропеременной HOME. eval [команда ...] Провести все макроподстановки и выполнить "ко- манду ...". exec [команда ...] Текущий процесс заменить процессом выполнения "команды ...". Допускается переопределение стан- дартных файлов ввода/вывода. exit [N] Прерывание выполнения текущего процесса с кодом завершения N. Если N отсутствует, код завершения определяется кодом завершения последней выпол- ненной команды. export [имя...] Указанные макропеременные автоматически вводятся в среду выполняемых впоследствии команд. Если параметры не заданы, выдается список имен экспортируемых макропеременных. login [пар ...] 141 AПK.00210-01 33 01-5 Регистрация пользователя в системе без создания нового процесса (эквивалент команды "exec login пар..."). newgrp [пар ...] Замена текущего идентификатора группы пользова- телей (эквивалент команды "exec newgrp пар..."). read имя ... Из стандартного файла ввода считывается одна строка. Затем макропеременным "имя ..." последо- вательно присваиваются значения слов, составля- ющих эту строку. Код завершения команды равен нулю во всех случаях, кроме тех, когда список параметров длиннее, чем число слов в считанной строке. readonly имя ... Запрещается переопределение перечисленных макропеременных. Если параметры не заданы, выда- ется список всех макропеременных, определенных как "readonly" (только для чтения). set [-eknptuvx [пар ...]] Устанавливает режимы работы интерпретатора sh. Могут задаваться следующие ключи: -e В неинтерактивном режиме вызывает немед- ленное прерывание при обнаружении ошибки в выполнении команды; 142 AПK.00210-01 33 01-5 -k Все определенные макропеременные экспорти- руются в среду запускаемых процессов; -n Производит только синтаксическую проверку команд; -t Прерывает выполнение процесса после того, как будет считана и выполнена одна коман- да; -u Устанавливает режим диагностики ошибки при попытке использовать неопределенные пере- менные; -v Устанавливает режим печати вводимых строк по мере их считывания; -x Распечатывает команды и их параметры по мере выполнения; - Отменяет ключи -x и -v. Установленные ключи содержатся в макропеременной "-". Остальным параметрам присваиваются значения позицион- ных параметров "1, 2, ...". Если параметры не заданы, печатается список значений всех макропеременных; shift Позиционным параметрам "2, 3, ..." присваиваются значения параметров "1, 2, ..." соответственно; times Выдается время, затраченное пользователем и сис- темой на выполнение процесса; 143 AПK.00210-01 33 01-5 trap [команда] [N ...] При получении перечисленных сигналов выполняется указанная "команда"; umask [ddd] Маске создания файлов пользователя присваивается восьмеричный код ddd . Если параметр ddd опущен, выдается текущеее значение маски; wait [n] Ожидает окончания выполнения процесса с номером n и присваивает его код завершения макроперемен- ной "?". ВЫЗОВ ИНТЕРПРЕТАТОРА: Если первым символом параметра "0" является знак "-", то команды считываются из файла .profile. При вызове могут указываться следующие ключи: -c строка Команды считываются из "строки"; -s Команды считываются из стандартного файла ввода. Сообщения интерпретатора записываются в стан- дартный файл диагностик (файл с дескриптором 2); -i Интерактивный режим работы интерпретатора. ФАЙЛЫ: $HOME/.profile /tmp/sh* 144 AПK.00210-01 33 01-5 /dev/null ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : csh, test, exec ДИАГНОСТИКА: Ошибки, обнаруженные интерпретатором (например, син- таксические ошибки), приводят к тому, что sh возвраща- ет код завершения, не равный нулю. Если при этом режим работы - неинтерактивный, то выполнение командного файла прекращается. Если же режим работы интерактив- ный, sh возвращает код завершения последней выполнен- ной команды. 145 AПK.00210-01 33 01-5 ИМЯ: size - сообщить размер об'ектного файла ФОРМАТ: size [обфайл...] ОПИСАНИЕ: Команда size печатает (десятичное) число байтов, зани- маемое текстовым сегментом, сегментом данных и bss, а также их сумму в десятичном и восьмеричном коде для каждого об'ектного файла "обфайл", указанного в пара- метрах. 146 AПK.00210-01 33 01-5 ИМЯ: sleep - задержать выполнение на заданный интервал ФОРМАТ: sleep время ОПИСАНИЕ: Команда sleep задерживает выполнение на "время" секунд. Она используется для выполнения команды через определенный промежуток времени, например: (sleep 105; команда) или для выполнения команды время от времени, например, while true do команда sleep 37 done ЗАМЕЧАНИЯ: "время" должно быть меньше 2 147 483 647 секунд. 147 AПK.00210-01 33 01-5 ИМЯ: soelim - фильтр для текстовых файлов в формате pif. ФОРМАТ: soelim [файл...] ОПИСАНИЕ: Команда переписывает файлы (по умолчанию стандартный файл ввода) в стандартный файл вывода, заменяя дирек- тивы pif вида: .so некоторый_файл содержимым указанных файлов. Поскольку такие програм- мы, как tbl, обычно не делают этого, команда soelim необходима, когда требуется располагать отдельные таб- лицы документа в различных файлах. Заметьте, что это включение может подавляться пос- редством использования "'" вместо ".", т.е. 'so /usr/lib/tmac.s Пример использования команды soelim: soelim exum?.n | tbl | pif -ms | col | lpr ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : colcrt, more ЗАМЕЧАНИЯ: Перед именем файла должен быть ровно один пробел, а после него не должно быть пробелов. 148 AПK.00210-01 33 01-5 ИМЯ: sort - сортировка и слияние файлов ФОРМАТ: sort [-mubdfinrtxz] [ +поз1 [-поз2] ]... [-o имя] [-T справочник] [имя]... ОПИСАНИЕ: Команда sort сортирует совместно строки всех указанных файлов и записывает результат в стандартный файл выво- да. Если входные файлы не заданы (или указан ключ "-"), сортируется информация из стандартного файла ввода. По умолчанию при сортировке рассматривается вся стро- ка. Стандартным порядком сортировки является афлавит- ный (для букв русского и латинского алфавита) и лекси- кографический побайтный в соответствии с численными значениями кодов КОИ-8 (для всех остальных символов). Для изменения правил сортировки используется ключ, ко- торый может содержать следующие символы: b Игнорировать ведущие пробелы и символы табуляции при сравнении полей; d "Словарный порядок": при сравнении учитываются только буквы, цифры и пробелы; f Не различать строчные и прописные буквы; i Игнорировать символы КОИ-8 с кодами вне диапазо- 149 AПK.00210-01 33 01-5 нов 040-0176 и 0300-0376 при текстовых сравнени- ях; n Строки начинающиеся с чисел (возможно с пред- шествующими пробелами), сортируются по арифмети- ческому значению. Ключ "n" подразумевает уста- новку ключа "b"; r Изменить порядок сортировки на обратный; tx "Символом табуляции", разделяющим поля, является символ "x"; z Сортировать в соотвествии с численным значением байтов. Запись "+поз1 -поз2" определяет часть строки, которая рассматривается при сортировке. Сортировка начинается с позиции "поз1" и заканчивающимся перед позицией "поз2". Каждый из параметров "поз1" и "поз2" имеет вид "m.n", после чего могут следовать один или несколько флагов bdfinr, причем m означает количество полей, ко- торое должно быть пропущено с начала строки, а n озна- чает количество символов, которое должно быть пропуще- но после этого. Если присутствуют какие-либо флаги, они отменяют глобальные ключи упорядочивания для данной части строки. Если действует ключ "b", "n" отсчитывается от первого (отличного от пробела) симво- ла поля; "b" добавляется независимо к "поз2". Отсутствие ".n" означает ".o", отсутствие "поз2" озна- 150 AПK.00210-01 33 01-5 чает конец строки. При наличии ключа "-tx" полями счи- таются последовательности символов, разделяемые симво- лом "x", если ключ "-tx" не задан в качестве полей рассматриваются последовательности отличных от пробелов символов, разделенные пробелами. Если имеются несколько ключей сортировки, последующие ключи сравниваются только после того, как предыдущие ключи оказались равны. Строки, которые при сравнении оказались равны, упорядочиваются с учетом всех байтов. Распознаются также следующие необязательные параметры: c Проверить, является ли входной файл отсортиро- ванным в соответствии с заданными правилами упорядочивания; не выдавать результат, если файл не отсортирован; m Только слияние, входные файлы уже отсортированы; o Следующий параметр представляет собой имя выход- ного файла, который должен использоваться вместо стандартного файла вывода. Этот файл может сов- падать с одним из входных файлов; T Следующий параметр представляет собой имя спра- вочника, в котором должны создаваться временные файлы; u Из каждой группы одинаковых строк оставить только одну. Игнорируемые байты и байты вне клю- 151 AПK.00210-01 33 01-5 чей не участвуют в сравнении. ПРИМЕРЫ: Выдать в алфавитном порядке все различные слова в файле "список". Слова с прописными буквами отличаются от слов со строчными буквами. sort -u +0f +0 список Выдать содержимое файла /etc/passwd, отсортированное по номерам идентификаторов пользователей (третье из разделенных двоеточиями полей): sort -t: +2n /etc/passwd Выдать первое вхождение каждого месяца в уже отсорти- рованном файле (dates). Ключи "-um" с единственным входным файлом обеспечивают выбор представителя из каждой группы одинаковых строк. sort -um +0 -1 dates ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : uni, comm, rev, join ДИАГНОСТИКА: Выдается сообщение и ненулевой код возврата при раз- личных ошибочных ситуациях и при неупорядоченности, обнаруженной при наличии ключа "-c". ЗАМЕЧАНИЯ: Слишком длинные строки усекаются без предупреждения. 152 AПK.00210-01 33 01-5 ИМЯ: split - разбить файл на части ФОРМАТ: split [-n] [файл [имя]] ОПИСАНИЕ: Команда split считывает "файл" и разбивает его на файлы, содержашие по n строк исходного файла каждый (по умолчанию - 1000). Если исходный файл содержит число строк не кратное n, последний результирующий файл может быть короче. Имя первого выходного файла представляет собой "имя" с добавкой "aa", и так далее в лексикографическом порядке. Если выходное имя не за- дано, по умолчанию принимается х. Если входной файл не указан или вместо него указывает- ся "-", используется стандартный файл ввода. 153 AПK.00210-01 33 01-5 ИМЯ: st - выдать на дисплей информацию о состоянии задания ОС ЕС. ФОРМАТ: st [идвм] имя_задания ОПИСАНИЕ: Команда st посылает запрос ОС ЕС через ПДП для получе- ния информации о состоянии задания, имя которого ука- зано в параметре "имя_задания". Виртуальная машина идентифицируется параметром "идвм", значение по умол- чанию complex1. Команда не снижает интерактивности работы за счет того, что формирует запрос к ПДП в фоновом режиме, ко- торый в свою очередь ожидает обратной связи в течении минуты. Если за это время ответа из ПДП не поступает, выдается диагностическое сообщение и команду st нужно повторить вновь. ФАЙЛЫ: /dev/smsg? 154 AПK.00210-01 33 01-5 ИМЯ: strip - удалить таблицу символов. ФОРМАТ: strip имя ... ОПИСАНИЕ: Команда strip удаляет таблицу символов и биты переме- щения, которые обычно присоединяются к выводу ас- семблера и редактора связей. Это полезно для экономии места после того, как программа была отлажена. Действие команды strip такое же, как использование ключа "-s" в команде ld. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : ld 155 AПK.00210-01 33 01-5 ИМЯ: stty - установить режим работы терминала. ФОРМАТ: stty [режим ...] ОПИСАНИЕ: Команда stty устанавливает определенные режимы вво- да/вывода для терминала пользователя. При отсутствии параметров она сообщает текущее состояние режима. Командой устанавливаются следующие режимы: even разрешить контроль по четности; -even заблокировать контроль по четности; odd разрешить контроль по нечетности; -odd заблокировать контроль по нечетности; Для полного отключения нужно указать "-even -odd". raw режим непосредственного ввода (нет забоя (kill), удаления (erase), прерывания (quit), конца пере- дачи (EOT); бит контроля по паритету возвращает- ся назад); -raw отмена режима непосредственного ввода; cbreak делать каждый символ доступным read(2) по мере поступления; нет забоя (kill) и удаления (erase); 156 AПK.00210-01 33 01-5 -cbreak делать символы доступными для read только после получения символа новой строки; -crmod строки на экране заканчиваются только символами новой строки; crmod допускается употребление символа возврата карет- ки (CR) вместо символа новой строки (NL); вместо возврата каретки или новой строки выводятся сим- волы возврат каретки - перевод строки (CR-NL); echo отображать в эхо-режиме вводимый символ; -echo не отображать символы в эхо-режиме; lcase преобразовывать символы верхнего регистра в сим- волы нижнего регистра; -lcase не выполнять преобразования регистра символов; -tabs заменять при печати символы табуляции пробелами; tabs сохранять символы табуляции; cyrill терминал имеет русские символы; -cyrill терминал не имеет русских символов; 157 AПK.00210-01 33 01-5 icyrill режим работы клавиатуры (русский/латинский) ус- танавливается от самой клавиатуры (Электроника 15 ИЭ 0013, клавиатура в "тестовом" режиме); -icyrill режим работы клавиатуры (русский/латинский) ус- танавливается от линии (Электроника 15 ИЭ 0013, клавиатура в "нормальном" режиме); Клавиатуру рекомендуется переключать в "тестовый" режим. dec установить символы забоя, удаления и прерывания в стиле ОС RSX-11, RT-11: ("забой", <control>u, <control>c). ek то же, что "dec". unix установить символы забоя, удаления и прерывания в стиле ОС UNIX: ("#", "@", <забой>). Символом "quit" устанавливается <control> . erase c рассматривать символ c как символ уничтожения. Символ уничтожения может также иметь вид ^x, что аналогично <ctrl>x; kill c рассматривать символ c как символ забоя строки. Здесь также действительна форма ^х; intr c 158 AПK.00210-01 33 01-5 рассматривать символ c как символ прерывания "interrupt". Здесь также действительна форма ^х; quit c рассматривать символ c как символ прерывания с созданием образа памяти "core". Здесь также дей- ствительна форма ^х; nl cr ht vt n установить задержку соответствующего движения курсора на n тиков; width n установить ширину страницы (длину строки) в n символов для автоматического переноса строки; lengh n устанoвить длину страницы в n строк, так чтобы вывод был постраничным; если задано length 0, деление на страницы прекращается; score стирание символов с экрана при забое (kill) и удалении (erase); -score отмена режима score; indctl выдавать control-символы в эхо-режиме, как ^<char + 0141>; 159 AПK.00210-01 33 01-5 -indctl отмена режима indctl; hup прекращает передачу данных по телефонному каналу связи при завершении сеанса; -hup не прекращает передачу данных по телефонному ка- налу связи при завершении сеанса; 0 немедленно прекращает телефонную связь; extb speed устанавливает скорость линии связи с терминалом в бодах равную "speed". Аргумент "speed" может принимать значения: 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600 (данные ско- рости поддерживаются интерфейсами dh и dz); cro cr1 cr2 cr3 выбирает время задержки для возврата каретки; nl0 ln1 nl2 nl3 выбирает время задержки для подачи на строку. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : tty, ioctl, tabs. 160 AПK.00210-01 33 01-5 ИМЯ: su - временно заменить идентификатор пользователя. ФОРМАТ: su [идентификатор_пользователя] ОПИСАНИЕ: Команда su порождает новый процесс интерпретатора ко- мандного языка с новым значением идентификатора поль- зователя. Если у пользователя с заказанным идентифика- тором существует пароль, он запрашивается и команда выполняется только в случае удачного ответа. Новый идентификатор пользователя используется пока не окон- чен сеанс работы с порожденным интерпретатором команд. Если идентификатор пользователя в команде su не ука- зан, то используется идентификатор супер-пользователя (root). Для того, чтобы как-то выделить работу в при- велегированном режиме, sh меняет подсказку на "#". ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : sh 161 AПK.00210-01 33 01-5 ИМЯ: sum - контрольная сумма и число блоков файла ФОРМАТ: sum file ... ОПИСАНИЕ: Sum вычисляет и выдает 16-битовую контрольную сумму и размер в блоках для заданных файлов. Эта команда обыч- но используется для обнаружения неверных мест или оп- ределения достоверности файла, передаваемого по линии передачи. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : wc ДИАГНОСТИКА: read error Ошибка чтения. При работе со специальными файла- ми может выдаваться при достижений конца файла (например, при попытке чтения блока, несуществу- ющего для данного типа диска). В этом случае, появления подобной диагностики не является сиг- налом о неуспешном завершении команды. 162 AПK.00210-01 33 01-5 ИМЯ: svc - выдать число системных вызовов. ФОРМАТ: svs программа [аргументы] ОПИСАНИЕ: svc выполняет программу "программа" с аргументами "ар- гументы" и выдает время начала работы каждого систем- ного вызова. Результат записывается в стандартный файл ошибок, для того, чтобы его можно было просмотреть после окончания пpoгpaммы. Программа time сообщает пользовательское время и время системы, затраченное на выполнение программы. Команда svc дает более полное представление o тoм, нa чтo этo вpeмя былo пoтpaчeнo. Команда mon используется для по- лучения более полной информации о времени пользовате- ля. 163 AПK.00210-01 33 01-5 ИМЯ: sysname - выдать имя ядра системы. ФОРМАТ: sysname ОПИСАНИЕ: Команда sysname печатает имя активного ядра системы ДЕМОС. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: ipl 164 AПK.00210-01 33 01-5 ИМЯ: tail - выдача части файла ФОРМАТ: tail [+-число[lbc]] [файл] ОПИСАНИЕ: Команда tail выдает указанный файл в стандартный файл вывода, начиная с заданного места. Если не указано имя файла, используется стандартный файл ввода. Копирование начинается с точки, находящейся на расто- янии "+число" от начала или "-число" от конца ввода. "Число" выражается в единицах строк, блоков или симво- лов в соответствии с заданными параметрами "l", "b" или "c". Если единицы не указаны, отсчет ведется в строках. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : dd ЗАМЕЧАНИЯ: Оставшиеся части файлов, отсчитывающиеся от конца файла, хранятся в буфере и поэтому ограничены в длине. Различные ошибки могут происходить при работе со спе- циальными файлами. 165 AПK.00210-01 33 01-5 ИМЯ: tape - закрепление и освобождение магнитных лент ФОРМАТ: tape [-muwq] [-nl] [-blp] [-sl номер_файла] [-d плотность] [-c ко- мандная_строка] серийный_номер ОПИСАНИЕ: Команда используется для передачи характеристик ленты, используемой в обмене данными. Операции ввода-вывода моделируются файлами накопления, куда предварительно постутают данные, считанные с ленты драйвером устрой- ства или в ожидании освобождения драйвера для записи на ленту. опции команды: -m смонтировать ленту. Действие режима по умолча- нию, если отсутствует опция -u; -u демонтировать ленту. Режим отменяет запрос мон- тирования, если лента еще не смонтирована. Опция не совместима со всеми остальными; -w смонтировать ленту для записи. Отсутствие опции монтирует ленту только в режиме чтения; -q опция выключает режим уведомления распределением устройств; -nl должна использоваться лента без меток. Ленты с 166 AПK.00210-01 33 01-5 метками будут разгружаться; -blp опция задает режим обхода обработки меток на ленте. Метки ленты рассматриваются как собствен- но файлы; -sl лента должна иметь стандартные метки в формате ОС ЕС, "номер_файла" указывает номер файла на ленте; -d устанавливает плотность записи на ленту. По умолчанию 63 зн/мм; -c выполнить команду ДЕМОС, записанную вместо пара- метра "командная-строка" Kоманда выполняется в фоновом режиме. Присутствие символьной последо- вательности %s в командной строке вызывает ее замену серийным номером ленты "серийный-номер" Например tape -m-c"cat %s>blot" GLOP84 команда копирует ленту GLOP84 в файл blot. ЗАМЕЧАНИЯ: Лeнтoчный cлeдящий пpoцecc и драйвер устройства под- держивают обработку меток лент, тем самым предотвраща- ется порча лент. Режимы обработки меток -nl, -sl, -blp описывают характеристику ленты на входе. Режим -nl относится к лентам, не содержащим метки файлов и серийный номер тома. Режим -sl характеризует ленту с серийным номером тома 167 AПK.00210-01 33 01-5 в первой записи и метками для ленточных файлов. Режим -blp устанавливает обработку с выключенной обра- боткой меток ленты. Метки ленты рассматриваются как собственно файлы. ФАЙЛЫ: /usr/spool/out/t* spool файла ленты /usr/spool/out/.spoolpid идентификатор процесса spool /dev/tape/?????? закрепление устройства для пользователя /dev/mt? закрепление устройства для системы /dev/tape/lock18 ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: opr, vmpunch, label, spoolеr, tm 168 AПK.00210-01 33 01-5 ИМЯ: tar - ведение архива на магнитных лентах ФОРМАТ: tar ключ [имя ...] ОПИСАНИЕ: С помощью команды tar сохраняются и восстанавливаются файлы в архиве на магнитной ленте. Режим работы коман- ды определяется с помощью аргумента "ключ". "Ключ" представляет собой один из признаков операции (r,x,t,u или c), и возможно, один или более ключей- модификаторов. Остальными аргументами команды являются имена файлов или каталогов, которые должны быть сохра- нены или восстановлены. Tar выполняет следующие операции: r Перечисленные файлы дозаписываются в архив на ленте. Запись ведется в конец архива; х Перечисленные файлы считываются с ленты. Если задано имя каталога, содержимое которого было записано на ленту, считываются файлы из этого каталога (начинающиеся с указанного имени). Вла- делец и статус файлов восстанавливаются (если это возможно). Если не задается ни одного аргу- мента "имя", восстанавливаются все файлы с ленты. Если на ленте имеется несколько имен, специфицирующих тот же самый файл, то считывают- 169 AПK.00210-01 33 01-5 ся все варианты файла и остается последний;. t Выдаются имена указанных файлов каждый раз, когда они появляются на ленте. Если аргументы "имя" не заданы, выдаются имена всех файлов на ленте; u Перечисленные файлы дозаписываются в архив на ленте, если их там не было или они были модифи- цированы с момента последней записи на ленту; c Создает новый архив на ленте. Запись ведется с начала, а не в конец архива. Следующие символы модифицируют заданную операцию: 1,2 Этот модификатор задает лентопротяжный меха- низм, на котором монтируется лента (по умолча- нию 12, если не задана переменная "TAPE"; ис- пользуется имя из переменной "TAPE", если оно задано. Переменная "TAPE" используется для пе- редачи имени ленты командами "tar", "mt", "ardos" и задается в интерпретаторе "sh" так (например , лента /dev/mt580): "TAPE=/dev/mt580; export TAPE"; в "csh" так: "setenv TAPE /dev/mt580". Имя можно также за- давать ключом "f".); v При использовании ключа v команда tar печатает имя каждого обрабатываемого файла и соот- ветствующую букву-функцию. В случае операции 170 AПK.00210-01 33 01-5 t, выдаются не только имена файлов на ленте, но и другая информация;. w Заставляет команду tar печатать принимаемое к исполнению действие, а затем ждать подтвержде- ния пользователя. Возможны следующие варианты ответа: "y" - выполнить действие, "n" - про- пустить действие, "=имя" - выполнить действие без запроса для всех файлов, имена которых совпадают или начинаются с "имя", "#имя" - пропускаются файлы, имена которых совпадают или начинаются с "имя";. f Заставляет команду tar использовать следующий аргумент в качестве имени архива вместо /dev/mt?. Если именем файла служит "-", tar пишет на стандартный вывод или читает из стан- дартного ввода. Таким образом, можно использо- вать tar как начало или окончание цепи фильтра. Tar можно также использовать для пе- ресылки иерархических структур с помощью ко- манды cd from; tar cf - * | (cd to; tar xf -); b Заставляет команду tar использовать следующий аргумент в качестве коэффициента блокирования записей на ленте. По умолчанию он равен 1, максимальное значение равно 127. Этот ключ 171 AПK.00210-01 33 01-5 следует использовать только для архивов на магнитной ленте типа /dev/mt?; i продолжать работу при ошибках чтения ленты или контрольной суммы заголовка, что позволяет, в частности, начинать чтение с середины архива на ленте. Tar при ошибке ищет следующий заго- ловок файла и продолжает работу; l Провоцирует выдачу сообщений при невозможности разрешить все связи восстанавливаемых файлов. Если этот ключ не задан, сообщения об ошибках не печатаются. Архив на ленте состоит из логических блоков по 512 байт (возможно, сблокированных в более длинные физи- ческие записи). Файлы занимают целое число записей, каждому файлу предшествует логический блок-заголовок. Весь архив записывается одним физическим файлом на ленте. Дозапись в сблокированный архив возможна при использовании драйвера "mt" для работы с лентами. ФАЙЛЫ: /dev/mt* /tmp/tar* ДИАГНОСТИКА: Сообщения о неправильных ключевых символах и об ошиб- ках чтения/записи. Сообщения о недостатке памяти для хранения таблиц свя- 172 AПK.00210-01 33 01-5 зи. ЗАМЕЧАНИЯ: Отсутствует возможность запроса n-ого появления файла. Операция u может выполняться медленно. При дозаписи, если используется "буферизованный" доступ к ленте, а имя устройства передается через переменную "TAPE" или с помощью флага "f", необходимо явно указывать коэффициент блокировки 1. В настоящее время ограничение на длину имени файла составляет 100 символов. 173 AПK.00210-01 33 01-5 ИМЯ: tbl - форматирование таблиц. ФОРМАТ: tbl [файлы] ... ОПИСАНИЕ: Команда tbl является препроцессором для системы подго- товки документации pif и служит для форматирования таблиц. Вводимые строки копируются в стандартный вывод, исключая строки, находящиеся между командными строками .TS и .TE (т.е. кроме описателей таблиц), в соответствии с описателями формируются таблицы. Если не задан ни один аргумент, команда tbl считывает стандартный файл ввода, поэтому она может использо- ваться как фильтр. В случае, когда tbl используется совместно с eqn или neqn, она должна быть первой для того, чтобы минимизировать об'ем данных, проходящих через программный канал. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: pif, eqn ЗАМЕЧАНИЯ: Поскольку в редакторе текстов re с целью "экономии" oбpaщeниe c кoдaми тaбyляции дocтaтoчнo пpoизвoльнo, пpи работе с tbl необходимо заменять разделитель. ПРИМЕРЫ: Пусть в файле txt записан следующий текст: 174 AПK.00210-01 33 01-5 .TS center tab(&); c s s c s s c c c l n n. ЭКСПРЕСС-ИНФОРМАЦИЯ ВИНИТИ Периодичность 48 номеров в год. &Индекс&Цена Авиастроение&56767&12-00 Вычислительная техника&56769&8-16 Городской транспорт&56770&7-68 Информатика&56772&5-28 Техническая кибернетика&56796&8-16 Электроника&56797&8-16 .TE В результате выполнения команды tbl txt | pif будет получен следующий текст: ЭКСПРЕСС-ИНФОРМАЦИЯ ВИНИТИ 175 AПK.00210-01 33 01-5 Периодичность 48 номеров в год. Индекс Цена Авиастроение 56767 12-00 Вычислительная техника 56769 8-16 Городской транспорт 56770 7-68 Информатика 56772 5-28 Техническая кибернетика 56796 8-16 Электроника 56797 8-16 176 AПK.00210-01 33 01-5 ИМЯ: tee - копирование информации. ФОРМАТ: tee [-i] [-a] [файл] ... ОПИСАНИЕ: Команда tee переписывает информацию из стандартного файла ввода в стандартный файл вывода и копирует ее в указанные файлы. Возможно использование ключей: -i устанавливает режим игнорирования прерываний; -a приводит к тому, что информация дописывается в файлы. 177 AПK.00210-01 33 01-5 ИМЯ: test - проверка условия. ФОРМАТ: test выр ОПИСАНИЕ: Команда test оценивает выражение "выр" и, если оно ис- тинно, возвращает нулевой код ответа; иначе возвраща- ется ненулевой код ответа. Если аргументы не заданы, возвращается ненулевой код ответа. Для построения "выр" используются следующие примитивы: -r файл истинно, если файл существует и доступен для чтения; -w файл истинно, если файл существует и доступен для за- писи; -f файл истинно, если файл существует и не является справочником; -d файл истинно, если файл существует и является спра- вочником; -s файл истинно, если файл существует и имеет размер 178 AПK.00210-01 33 01-5 больший, чем нуль; -t [fildes] истинно, если открытый файл, имеющий номер дескриптора файла равный fildes (по умолчанию 1), связан с терминалом; -z s1 истинно, если строка s1 имеет нулевую длину; -n s1 истинно, если строка s1 имеет ненулевую длину; s1 = s2 истинно, ести строки s1 и s2 равны; s1 != s2 истинно, если строки s1 и s2 не равны; s1 истинно, если s1 не является пустой строкой; n1 -eq n2 истинно, если целые числа n1 и n2 алгебраически равны. Вместо -eq могут использоваться любые операции сравнения: -ne, -qt, -ge -lt или -le. Эти элементарные операции могут комбинироваться с по- мощью следующих операторов: ! унарный оператор отрицания; -a бинарный оператор и; -o бинарный оператор или; ( выр ) 179 AПK.00210-01 33 01-5 круглые скобки для группировки; Операция -a имеет более высокий уровень старшинства, чем -o. Все операторы и флаги являются отдельными ар- гументами команды test. Поскольку круглые скобки явля- ются специальными символами командного языка они должны быть взяты в кавычки. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : sh, find 180 AПK.00210-01 33 01-5 ИМЯ: time - получение времени работы команды. ФОРМАТ: time команда ОПИСАНИЕ: Заданная команда выполняется, после ее завершения time печатает астрономическое время, в течение которого вы- полнялась команда, время, затраченное системой, и вре- мя, затраченное при выполнении команды. Время выдается в секундах в стандартный файл вывода диагостических сообщений. ЗАМЕЧАНИЯ: Использованное время выдается с точностью до секунды, хотя время центрального процессора измеряется с точ- ностью до 1/50 секунды. Таким образом, сумма времен ЦП может быть на секунду больше, чем использованное вре- мя. 181 AПK.00210-01 33 01-5 ИМЯ: touch - изменение даты модификации файла. ФОРМАТ: touch [-c] файл ... ОПИСАНИЕ: Команда touch пытается изменить дату модификации каж- дого файла, имена которых задаются аргументами "файл". Это делается путем чтения символа из файла и записи его обратно. Если файл не существует, будет сделана попытка создать его, кроме тех случаев, когда задан ключ -c. 182 AПK.00210-01 33 01-5 ИМЯ: tr - транслитерация символов. ФОРМАТ: tr [-cds] [стр1 [стр2]] ОПИСАНИЕ: Команда tr переписывает стандартный файл ввода в стан- дартный файл вывода с замещением или удалением выбран- ных символов. Входные символы, соответствующие симво- лам, заданным в "стр1", отображаются в соответствующие символы из "стр2". Если строка стр2 короче, она запол- няется до длины строки стр1 повторением своего послед- него символа. Могут быть использованы любые комбинации ключей -cds: -c дополняет набор символов в "стр1" до набора сим- волов, в котором восьмеричные коды КОИ-8 изменя- ются от 01 до 0377; -d удаляет все входные символы, соответсвующие сим- волам в строке "стр1"; -s сжимает все строки повторяющихся выводных симво- лов, которые есть "стр2", до одиночных символов. Запись вида A-Z в любой из строк означает диапазон символов от A до Z в возрастающем порядке КОИ-8. Символ '/, за которым следуют 1, 2 или 3 восьмеричные цифры, означает символ, код КОИ-8 которого составляют эти цифры. Если за символом '/ следует какой-либо 183 AПK.00210-01 33 01-5 другой символ, это равносильно этому символу. В следующем примере создается список всех слов в file1 одно на строку в file2, где словом считается макси- мальная строка букв. Вторая строка заключается в ка- вычки для того, чтобы "защитить" символ '/ от обра- ботки командным языком. Число "012" представляет собой код КОИ-8 для символа перехода на новую строку. tr -cs A-Za-z ' 12' <file1 >file2 ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : ed ЗАМЕЧАНИЯ: Если вы не желаете обрабатывать символ КОИ-8 nul в "стр1" или "стр2", всегда удаляйте nul из ввода. 184 AПK.00210-01 33 01-5 ИМЯ: true, false - получение значения "истинно" ("ложно"). ФОРМАТ: true false ОПИСАНИЕ: Команда true ничего не делает, а только выдает код возврата равный нулю. Команда false выдает ненулевой код возврата. Эти команды обычно используются в ко- мандных файлах sh, например: while true do команда done ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : sh 185 AПK.00210-01 33 01-5 ИМЯ: tsort - топологическая сортировка. ФОРМАТ: tsort [файл] ОПИСАНИЕ: Команда tsort выдает в стандартный файл вывода пол- ностью упорядоченный список элементов, согласующийся с частичным упорядочением элементов, находящихся во вводном файле "файл". Если аргумент "файл" не задан, используется стандартный файл ввода. Вводная информация содержит пары элементов (непустые строки), разделяемые пробелами. Пары разных элементов указывают порядок. Пары одинаковых элементов указывают присутствие, но не порядок. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : lorder ДИАГНОСТИКА: odd data: нечетное число полей во вводном файле. 186 AПK.00210-01 33 01-5 ИМЯ: tty - получение имени терминала. ФОРМАТ: tty ОПИСАНИЕ: Команда tty печатает полное имя терминала пользовате- ля. ДИАГНОСТИКА: Если стандартный файл ввода не является терминалом, то печатается сообщение "not а tty". 187 AПK.00210-01 33 01-5 ИМЯ: uncompact - распаковать скомпрессированный файл. ФОРМАТ: uncompact [имя...] ОПИСАНИЕ: Команда uncompact распаковывает файл, скомпрессирован- ный ранее с помощью команды compact. Имя исходного файла должно иметь окончание ".C". В результате работы образуется распакованный файл с тем же именем, но без окончания ".C". Соответствующий компрессированный файл уничтожается. Если ни одного имени файла не задано, то распаковывается информация поступающая из стандартного файла ввода, а результат записывается в стандартный файл вывода. ДИАГНОСТИКА: Сообщения о неоткрывающихся файлах и т.п. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : compact, ccat 188 AПK.00210-01 33 01-5 ИМЯ: uniq - сообщить о повторяющихся строках в файле. ФОРМАТ: uniq [-udc [+n] [-n]] [filein [fileout]] ОПИСАНИЕ: Команда uniq сравнивает соседние строки файла "filein". Вторая и последующие повторяющиеся строки удаляются; оставшаяся часть записывается в выводной файл. Если используется ключ "-u", выводятся только неповторяющиеся строки. Kлюч "-d" указывает, что будет выдаваться только одна из повторяющихся строк. Часто ключи "-u" и "-d" используются совместно. Ключ "-c" отменяет действие ключей "-u" и "-d" и зада- ет режим, при котором повторяющиеся строки не выдаются и перед каждой строкой печатается сколько раз данная строка встретилась в исходном файле. Аргумент "n" указывает, какую начальную часть каждой строки нужно пропустить при сравнении: -n Игнорируются первые "n" полей и любое число про- белов перед каждым полем. Поле определяется как строка символов (не пробелов и не символов табу- ляции), отделяемая от своих соседей символами табуляции или пробелами. +n Игнорируются первые "n" символов. Поля пропуска- ются перед символами. 189 AПK.00210-01 33 01-5 ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : sort, comm 190 AПK.00210-01 33 01-5 ИМЯ: units - преобразование единиц измерений. ФОРМАТ: units ОПИСАНИЕ: Команда units преобразует величины из одной системы единиц в другую, Работа ведется интерактивно следующим образом: you have: inch you want: cm * 2.54000е+00 / 3.93701е-01 Величина задается как мультипликативная комбинация единиц, необязательно сопровождаемая числовым множите- лем. Степени указываются в виде суффикса, состоящего из положительных целых чисел: деление - обычным зна- ком: you want: 15 pounds forse/in2 you want: atm * 1.02059+00 / 9.79730е-01 Команда units выполняет только мультипликативные изме- нения шкалы. Таким образом, она может перевести граду- сы Кельвина в Ренкина, но не может перевести градусы Цельсия в градусы Фаренгейта. Распознаются наиболее знакомые единицы, абревиатуры и метрические приставки, 191 AПK.00210-01 33 01-5 а также несколько констант: pi отношение длины окружности к диаметру; c скорость света; e заряд электрона; g ускорение силы тяжести; force то же, что g; mole число Авогадро; water давление единицы водяного столба; au астрономическая единица; Pound единица массы. Составные названия пишутся слитно. Типично английские единицы, отличающиеся от одноименных единиц использу- емых в США, снабжаются приставкой br (например, brgallon). Названия денежных единиц составляется из названия страны и собственно единицы (например, britanpound). Полный список единиц можно получить, распечатав файл /usr/lib/units. ЗАМЕЧАНИЯ: Для того, чтобы преобразование валют работало верно, необходимо постоянно корректировать файл /usr/lib/units. 192 AПK.00210-01 33 01-5 ИМЯ: vmid - распечатать идентификатор ВМ ФОРМАТ: vmid ОПИСАНИЕ: команда распечатывает идентификатор виртуальной мaшины ,в кoтopoй paбoтaeт пользователь ДЕМОС. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: vmid 193 AПK.00210-01 33 01-5 ИМЯ: vmmsg - послать сообщения пользователю ВМ ФОРМАТ: vmmsg идвм [текст ...] ОПИСАНИЕ: команда позволяет пользователю ДЕМОС послать сообщения для пользователя ВМ. Регистрационный идентификатор пользователя автоматически включается в сообщение. Если командная строка не coдepжит cooбщeниe ,тo для данного сообщения используется стандартный ввод. Мак- симальная длина сообщения- 100 символов. 194 AПK.00210-01 33 01-5 ИMЯ: vmpunch - перфорироваtь файл ДЕМОС. ФОРМАТ: vmpunch [-rhdsqo] [-v идвм] [-i имя] [-t тег] [-c класс] [-f тег_файл] [-u имя] [-x коман- да[:аргумент]] [файл] ОПИСАНИЕ: Команда vmpunch записывает данный файл (или использу- ется cтaндapтный ввoд, ecли никaкoгo файла не дано) для перфорации в ВМ. ВМ будет передавать отперфориро- ванный файл для виртуального считывающего устройства виртуальной машины указанного идентификатора или, ecли oн нe yкaзaн, oн берется из файла /etc/passwd. -r пoдaвляeт пpeoбpaзoвaниe данных из КОИ-8 в ДКОИ; -h посылает файл с заголовком; -d удалить вводной файл после его перфорации; -s перфорировать в режиме "stream". Данные перфори- руются в формате "TWO BYTE <LENGTH> <DATA>..."; -q принимающая система ДЕМОС не извещает владельца о прибытии файла; -о режим переписывания. Сообщает принимающей систе- ме ДЕМОС о необходимости переписать записанный файл; 195 AПK.00210-01 33 01-5 -v идвм идeнтификaтop BM, кoтopaя получает задание. Если параметр имеет форму COMPLEX.VMID, тогда файл передается в ПДП для направления его в систему, указанную с помощью COMPLEX. Если -v не исполь- зуеся, то команда будет использовать ввод из /etc/passwd; -i используется указанный идентификатор пользовате- ля ДЕМОС для назначения пpaвa oблaдaния фaйлoм, ecли данные перфорируются для системы ДЕМОС; -f используйте "tег_файл" в кaчecтвe имeни, кoтopoe дается файлу. Ecли нe иcпoльзyeтcя, тo команда будет использовать имя ввoднoгo фaйлa, ecли этo нe cтaндapтный ввoд, в этoм случае используется "from.punch"; -c класс для перфорации. Обычно в; -т использование указанной информации. Особенно по- лезно это при перфорировании для ПДП; -u использовать указанный идентификатор пользовате- ля как идентификатор машины ДEMOC, paбoтaющeй кaк ВМ. В этом случае генерируется карта userid для принимающей машины; -Х выполнить команду из /usr/spool/bin с аргумента- ми Перфорируемый файл становится стандартным вводом для команды в принимающей системе ДЕМОС. 196 AПK.00210-01 33 01-5 Данная команда не должна использоваться для перфорации заданий для системы ОС ЕС. Для этого необходимо ис- пользовать команду send. Перфорируемые файлы между системами ДЕМОС используют заголовок для пepeдaчи информации об идентификаторе пользователя и местoнахождении файла. Для перемещений между системами ДЕМОС используются флаги -i и -x. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: send, vmread, spooler 197 AПK.00210-01 33 01-5 ИМЯ: wc - подсчет слов. ФОРМАТ: wc [-lwcpt] [-bбод] [-sразм_стр] [-u] [-v] [файл...] ОПИСАНИЕ: Команда wc подсчитывает число строк, слов, символов и (если заказано) число листов и время передачи по линии связи указанных файлов. Если отсутствуют аргументы "файл", весь подсчет делается для информации из стан- дартного файла ввода. Словом считается максимальная строка символов, ограниченная пробелами, символами та- буляции или символами новой строки. Ключ, если он задается, может содержать символы "l", "w", "c", "p", и "t" что соответствует подсчету строк (l), слов (w), символов (c), числа листов (p) и време- ни передачи (t). -bбод Указывает, что скорость передачи ("бод") отлична от принятой по умолчанию (300 бод). -sразм_стр Задает размер листа (по умолчанию 66 строк). -u Указывает, что при определении времени печать следует учитывать время передачи по сети. -v Задает режим печати заголовков. 198 AПK.00210-01 33 01-5 ПРИМЕРЫ: Подсчет числа слов, строк, листов в файле wc.1 и выда- ча данной информации с заголовком: wc -lwcpt -v wc.1 в результате выполнения этой команды будет выдано сле- дующее сообщение: lines words chars pages time@300 42 86 1312 1 43.0 se wc.1 ЗАМЕЧАНИЯ: При подсчете времени печати не учитываются такие фак- торы как степень загрузки машины, и т.п. 199 AПK.00210-01 33 01-5 ИМЯ: whatis - выдать краткую справку о компоненте. ФОРМАТ: whatis name ... ОПИСАНИЕ: Команда whatis выдает краткую справку о назначении каждой из перечисленных компонент системы ("name"). Полные документы по заданным компонентам можно полу- чить с помощью команды man. ФАЙЛЫ: /usr/lib/whatis краткий справочник ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : man, catman, apropos 200 AПK.00210-01 33 01-5 ИМЯ: whereis - поиск компоненты ФОРМАТ: whereis [-sbm] [-u] [-sbm справоник ... -f] name ОПИСАНИЕ: Команда whereis производит поиск всех вхождений ука- занного имени ("name") в имена файлов стандартных справочников. При сравнении заданного имени с базовым именем файла, окончания типа ".c", ".bak" ".etc" и т.п., не рассматриваются. Выдаются полные имена най- денных файлов. При вызове команды могут задаваться следующие ключи: -s производить поиск в справочниках, содержащих ис- ходные тексты команд (по умолчанию, просматрива- ются справочники с исходными текстами команд ОС ДЕМОС); -b производить поиск в справочниках, содержащих го- товые к выполнению команды (по умолчанию, прос- матриваются справочники с командами ОС ДЕМОС); -m производить поиск в справочниках, содержащих до- кументацию. (по умолчанию, просматриваются спра- вочники с оперативной документацией по ОС ДЕМОС); -u выдавать сообщения только о тех файлах, имена 201 AПK.00210-01 33 01-5 которых не содержат вхождений ни одного из эле- ментов списка "name". -f признак конца списка справочников. Ключи "-b", "-m", и "-s" могут использоваться для за- дания области просмотра команды whereis. В этом слу- чае, после соответствующего ключа помещается список справочников, содержащих файлы указанного типа. ПРИМЕРЫ: Поиск всех файлов в справочнике основных команд систе- мы, которые не имеют соответствующих описаний в спра- вочнике с оперативной документацией: whereis -u -m /bin ФАЙЛЫ: /bin/* /usr/bin/* /usr/lib/* /etc/* Поскольку используется системный вызов chdir, имена справочников, в которых осуществляется поиск, должны приводится полностью. 202 AПK.00210-01 33 01-5 ИМЯ: who - кто работает в системе. ФОРМАТ: who [who-файл] [am i] ОПИСАНИЕ: Команда who без аргумента выдает для каждого активного пользователя системы ДЕМОС регистрационное имя, имя терминала и время регистрации. Если задан аргумент, печатается аналогичная строка о выходе из системы без имени пользователя. Для повторных загрузок печатается строка с "x" на месте имени устройства и время оконча- ния работы системы. Если заданы два аргумента, например, "who am I" (а также "who are you"), who печатает имя под которым вы зарегистрировались в системе. ФАЙЛЫ: /etc/utmp ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : getuid, utmp 203 AПK.00210-01 33 01-5 ИМЯ: write - передача сообщения другому пользователю. ФОРМАТ: write имя_пользователя [имя_tty] ОПИСАНИЕ: Команда write используется для передачи сообщений на терминал другого пользователя. Когда команда вызывает- ся, она посылает сообщение: Message from "username" "ttyname".. Передача продолжается до тех пор пока не считывается конец файла на терминале или не посылается прерывание. По концу передачи, write печатает на другом терминале "EOF" и завершает работу. Если вы хотите послать сообщение пользователю, который более чем один раз зарегистрировался в системе, можно использовать аргумент "имя_tty" для того, чтобы ука- зать соответствующее имя терминала. С помощью команды mesg можно закрыть свой терминал на прием сообщений от других пользователей. Вначале запись разрешается. Некоторые команды, в частности re, и pr, на время своей работы закрывают терминал на при- ем сообщений, чтобы предотвратить беспорядочный вывод. Если строка начинаетсяя символом "!", write вызывает интерпретатор команд для того, чтобы выполнить остаток 204 AПK.00210-01 33 01-5 строки как команду. При использовании write рекомендуется придерживаться следующего протокола: при первом обращении к другому пользователю, перед тем, как начинать свою посылку, дождитесь его ответа. Каждая сторона должна заканчи- вать каждое сообщение выделяющим сигналом "о". Код "оо" используется, когда диалог близок к завершению. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : mesg, who, mail 205 AПK.00210-01 33 01-5 ИМЯ: xstr - выделение текстовых констант из программ на языке Си. ФОРМАТ: xstr [-c] [-x] [-] [файл] ОПИСАНИЕ: Команда xstr предназначена для выноса текстовых строк из программ на Си и сбора их либо в отдельный модуль, либо во внешний файл. В первом режиме команда xstr ведет файл "strings", в котором собраны текстовые константы разных частей большой программы. Эти константы заменяются в программе ссылками на соот- ветствующую строку в этом файле вида "&xstr[номер]". Во втором режиме создается файл "Messages", в который собираются достаточно длинные (больше 12 байтов) текстовые строки. Обращения к этим строкам заменяются на обращения к программе "Xsline(адрес)", которая чи- тает строку по указанному адресу в буфер и возвращает адрес считанной строки. Не всегда такая замена строк корректна. Команда "xstr" при обработке текста программы воспринимает специаль- ные комментарии, которые выключают или включают раз- личные режимы обработки программы. Команда xstr -c имя 206 AПK.00210-01 33 01-5 выделяет из файла "имя", в котором находится исходный текст программы на языке Си, строки и заменяет их ссылками вида &xstr[число]. К файлу добавляется соот- ветствующее об'явление массива xstr. Результирующий текст на Си помещается в файл x.c и должен затем быть скомпилирован. Выделенные строки размещяются в файле strings, если их там до этого не было. Повторяющиеся строки и строки, представляющие собой части существу- ющих строк, не приводят к изменениям в файле strings. После того, как все компоненты большой программы ском- пилированы, должен быть создан файл xs.c, инициализи- рующий массив xstr, с помощью команды вида: xstr Этот файл xs.c должен быть скомпилирован и загружен вместе с остальной программой. Массив xstr можно пере- вести из сегмента "data" в сегмент "text", (например, оттранслировав его на язык ассемблера и поменяв слово ".data" на ".text" в полученном файле). Xstr может также работать с одним файлом. Команда: xstr имя создает, как и прежде, файлы х.c и xs.c, не пользуясь при этом никаким файлом strings в том же каталоге. Выполнение xstr наиболее эффективно после работы преп- роцессора Си, если какие-либо макроопределения создают строки или если имеется условно транслируемые части 207 AПK.00210-01 33 01-5 программы, содержащие строки, которые фактически могут не понадобиться. Если задан аргумент "-", xstr считывает стандартный файл ввода. Для выполнения xstr после препроцессора Си может использоваться следующая последовательность команд: cc -C -P имя.c xstr -c имя.i cc -c х.c mv х.o имя.o rm имя.i Если не добавляются новые элементы, xstr не изменяет файл strings; таким образом, можно избежать повторного создания xs.o, за исключением случаев, когда это дей- ствительно необходимо. Команда: xstr -x -c имя собирает строки в файл "Mesages", и переписывает прог- рамму в файл "x.c", заменяя строки на обращения к функции "Xsline(адрес)", где "адрес" - адрес строки в файле "Messages". В программу вставляется описание функции Xsline. Команда: xstr -x создает файл "xs.c", содержащий текст функции Xsline. При трансляции этот файл настраивается на имя файла с 208 AПK.00210-01 33 01-5 текстами диагностик с помощью макропеременной "XSFILE": cc -O -c -DXSFILE= Для управления обработкой в программе на Си служат псевдокомментарии: /*NOXSTR*/ блокировка выноса строк в режиме "xstr -c" в тексте за комментарием; /*NOXXSTR*/ то же самое, но в режиме "xstr -c -x"; /*YESXSTR*/ или /*YESXXSTR*/ разрешение выноса строк в обоих режимах. Естественно, что, если xstr используется после препро- цессора, должен использоваться флаг команды cc "-C" для того, чтобы препроцессор не уничтожал комментарии. При использовании "xstr -c" вынос строк должен блоки- роваться в конструкциях инициализации типа: char x[]="строка"; При выносе строки в файл (режим "xstr -c -x") обработ- ка должна блокироваться во всех инициализациях данных, а также везде, где строка будет использоваться сколь нибудь продолжительно. Это связано с тем, что при зап- росе у функции Xsline следующей строки предыдущая сти- рается. 209 AПK.00210-01 33 01-5 При использовании "xstr -x -c" в программах, которые собираются с помощью команды "ldover", файл "Messages" можно дозаписать в библиотеку разделов загрузки "V.out.a"; в этом случае функцию Xsline (файл xs.c) транслировать не нужно. ЗАМЕЧАНИЯ: Если строка является суффиксом другой строки, но более короткая строка первой просматривается xstr, в файл "strings" помещаются обе строки, хотя достаточно было бы поместить только более длинную строку. 210 AПK.00210-01 33 01-5 ИМЯ: yacc - компилятор компиляторов. ФОРМАТ: yacc [-vd][-f парсер] грамматика ОПИСАНИЕ: Yacc преобразовывает безконтекстную грамматику в набор таблиц для простого автомата, который выполняет алго- ритм грамматического разбора. Грамматика может быть неоднозначной, для устранения неоднозначности исполь- зуются правила старшинства, задаваемые пользователем. Выходной файл должен быть скомпилирован компилятором Си, в результате чего получается программа yyparse. Эта программа должна быть загружена совместно с прог- раммой лексического анализа yylex, а также программой main и программой обработки ошибок yyerror. Эти прог- раммы пишутся пользователем. Для создания лексических анализаторов, которые могут работать с yacc, можно ис- пользовать lex. Если задан флаг -v, yacc составляет файл y.output, со- держащий описание таблиц грамматического разбора и от- чет о конфликтах, связанных с неоднозначностями грам- матики. Если задается флаг -d, генерируется файл с операторами #define, в которых устанавливается связь между "кодами знаков", присваиваемых yacc, и именами знаков, об'яв- 211 AПK.00210-01 33 01-5 ляемых пользователем. Этим самым создается возможность доступа к кодам знаков из других исходных файлов. Если задан флаг -f, используется нестандартный грамма- тический анализатор из файла, имя которого задается следующим за флагом аргументом, "парсер". По умолчанию используется "/usr/lib/yaccpar". ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : lex ДИАГНОСТИКА: В стандартный файл вывода выдается число конфликтов reduce-reduce и shift-reduce. Сообщается также, если некоторые правила не достижимы со стартового символа. ЗАМЕЧАНИЯ: Поскольку имена файлов постоянны, в один и тот же момент в заданном каталоге может быть активным только один процесс yacc. 2 AПK.00210-01 33 01-5 АННОТАЦИЯ Данный документ содержит команды общего назначения системы демос, предназначенные для непосредственного вызо- ва пользователем. Приводимые в приложении команды отражают текущее состояние стандартной оперативной справочной доку- ментации системы. Все команды в документе упорядочены в алфавитном порядке. В документе для удобства пользования описание команд начинается с нового листа. 3 AПK.00210-01 33 01-5 СОДЕРЖАНИЕ 1. КОМАНДЫ ОБЩЕГО НАЗНАЧЕНИЯ......................... 4 ПРИЛОЖЕНИЕ............................................ 5