записей на ленте. По умолчанию он равен 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