ванный файл для виртуального считывающего устройства
виртуальной машины указанного идентификатора или, 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