в стандартный файл вывода. Команда deroff следует по
цепочкам включенных файлов (команды ".so" и
".nx").Eсли файл уже был включен, ".so" игнорируется,
а ".nx" завершает выполнение. Если входной файл не
указан, deroff осуществляет чтение из стандартного
входного файла.

Если указан флаг "-w", выход представляет собой список
слов, по одному "слову" (строка букв, цифр и апостро-
фов, начинающаяся буквой; апострофы удаляются) в стро-
ке, все остальные символы игнорируются. В остальных
случаях выход соответствует оригиналу, с учетом исклю-
чения вышеупомянутых конструкций.

ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:
pif, eqn, tbl

ЗАМЕЧАНИЯ:

120
АПК 00210-01 33 01-4

Команда deroff не является полным интерпретатором pif,
вследствие чего утонченные конструкции могут приводить
к ошибкам. Большинство ошибок приводят к слишком боль-
шому, а не слишком малому выводу.














121
АПК 00210-01 33 01-4

ИМЯ:
diff - сравнение файлов и справочников.

ФОРМАТ:
diff [-l] [-r] [-s] [-cefh] [-b] спр1 спр2
diff [-cefh] [-b] файл1 файл2
diff [-dстрока] [-b] файл1 файл2

ОПИСАНИЕ:
Если оба параметра являются справочниками, diff сос-
товляет списки имен содержащихся в них файлов (отсор-
тировав их в алфавитном порядке) и выполняет регуляр-
ную процедуру сравнения над текстовыми файлами. Если в
справочниках содержатся несовпадающие подсправочники
или нетекстовые файлы с одинаковыми именами, они прос-
то перечисляются. Так же перечисляются файлы, встреча-
ющиеся только в одном из справочников. При сравнении
справочников можно задавать следующие ключи:

-l "длинный формат выдачи" - каждый текстовый файл
выводится с помощью команды pr.Oтличия в файлах
других типов накапливаются и выдаются после со-
общений о всех текстовых файлах;

-r команда diff выполняется рекурсивно для всех
подсправочников с одинаковыми именами;

-s команда сообщает только о совпадающих файлах;

-sname
сравнение содержимого справочников начинается с


122
АПК 00210-01 33 01-4

имени name.

Команда diff сообщает, какие строки должны быть изме-
нены в двух файлах, чтобы они совпали. Если вместо
"файл1" ("файл2") указан "-", используется стандартный
файл ввода. Если один из параметров указывает на спра-
вочник, используется тот файл в этом справочнике, чье
имя совпадает с именем файла "файл2" ("файл1"). Нор-
мальный вывод содержит строки следующего вида:

n1 a n3, n4
n1, n2 d n3
n1, n2 с n3, n4

Эти строки соответствуют командам ed для преобразова-
ния "файла1" в "файл2". Числа после букв относятся к
файлу "файл2". На самом деле, меняя "a" на "d" и про-
изводя чтение в обратном порядке, можно также опреде-
лить, как преобразовать "файл2" в "файл1". Как и в ed,
одинаковые пары, в которых n1=n2 или n3=n4 сокращаются
до одного числа.

После каждой из этих строк следуют все соответствующие
строки первого файла, отмеченные "<", а затем все со-
ответствующие строки второго файла, отмеченные ">".

Ключ "-b" приводит к игнорированию заключительных про-
белов и символов табуляции, а также к тому, что раз-
личные последовательности пробелов считаются эквива-
лентными.

123
АПК 00210-01 33 01-4

Следующая группа ключей является взаимоисключающей:

-e Приводит к созданию списка команд a, c и d для
редактора ed, который воссоздает "файл2" из
"файла1". Следующая программа для интерпретатора
команд совместно с опцией "-е" помогает сопро-
вождать несколько версий файла. Под руками нужно
иметь только исходную версию файла ($1) и цепоч-
ку списков команд ed для перехода от одной вер-
сии к другой, полученных с помощью ed ($2, &3,
...). "последняя версия" помещается в стан-
дартный файл вывода:

(shift; cat $*; echo '1,$p') ! ed -$1 ;

-f Генерирует список аналогичный "-e", не использу-
емый с ed, и в обратном порядке;

-c Выдает контекст,в котором встречаются измененные
строки. По умолчанию выдается три строки до и
три строки после различающихся строк. Число до-
полнительно выдаваемых строк можно задавать. Так
команда с ключом "-c10", будет выдавать 10 строк
до и 10 строк после каждой различающейся стро-
ки. Кроме того, при задании "-c" выдаются имена
сравниваемых файлов с датами их создания. Сооб-
щения о каждом изменении разделяются строками
"**********". Строки,отсутствующие в файле1,мар-
кируются символом "-".Строки,добавленные в фай-
л2,символом "+". измененные строки символом "!";


124
АПК 00210-01 33 01-4

-Dстрока
Создает об'единенную версию файлов (файл1 и
файл2), окружая все различающиеся строки дирек-
тивами условной компиляции препроцессора языка
Си. При этом "строка" используется в качестве
аргумента директив препроцессора. Так, если в
файлax file1 и file2 различается строка:

long int k=1000000 /* строка из file1 */
int k=1000000 /* строка из file2 */
команда:
diff -DLONGINT file1 file2

проводит выдачу в стандартный вывод файла, в ко-
тором данная строка будет заменена на следующую
конструкцию:

#ifndef LONGINT
long int k=1000000 /* строка из file1 */
#else
int k=1000000 /* строка из file2 */
#endif

-h Выполняет свою работу быстро и грубо. Она рабо-
тает только в тех случаях, когда участки измене-
ний малы и хорошо отделены друг от друга, однако
может обрабатывать файлы неограниченной длины. С
ключом "-h" не допускаются ключи "-e" и "-f".

За исключением редких случаев, diff находит наименьший

125
АПК 00210-01 33 01-4

достаточный набор различий файлов.

ФАЙЛЫ:
/tmp/d?????
/usr/lib/diffh для ключа "-h".

ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:
cmp, comm, ed

ДИАГНОСТИКА:
Код возврата равен:

0 - если нет различий;

1 - если различия есть;

2 - если выполение команды неудачно.

ЗАМЕЧАНИЯ:
Списки редактирования, генерируемые с ключами "-e" и
"-f", не создают строк, состоящих из одной ".".







126
АПК 00210-01 33 01-4

ИМЯ:
diff3 - сравнение трех файлов.

ФОРМАТ:
diff3 [-ех3] файл1 файл2 файл3

ОПИСАНИЕ:
Команда diff3 сравнивает три версии файла и сообщает
степени рассогласования текстов, отмечаемые следующими
кодами:

==== все три файла различны;

====1 отличается "файл1";

====2 отличается "файл2";

====3 отличается "файл3".

Вид изменения, позволяющий преобразовать данный учас-
ток данного файла, указывается одним из следующих спо-
собов:

f:n1 a
текст должен быть добавлен после строки с номе-
ром n1 в файле "f", где f=1, 2 или 3.

f:n1,n2 c
Текст должен быть изменен на участке от строки
n1 до строки n2. Если n1=n2, участок может быть
сокращен до n1.

Исходное содержимое участка приводится сразу же после


127
АПК 00210-01 33 01-4

указания "c". Если содержимое двух файлов одинаково,
содержимое файла с меньшим номером не выводится.

С ключoм "-e" diff3 создает командный файл для редак-
тора ed, который включит в "файл1" все изменения между
файлами "файл2" и "файл3", т.е. изменения, которые
нормально были бы помечены "====" и "====3". Опция
"-x" ("-3") создает командный файл для включения
только изменений, отмечаемых "====" ("====3"). Следу-
ющая команда применит полученный в результате ко-
мандный файл (script) к файлу "файл1":

(cat script; echo '1,$p') | ed - файл1

ФАЙЛЫ:
/tmp/d3?????
/usr/lib/diff3

ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ:
diff

ЗАМЕЧАНИЯ:
Строки текста, состоящие из одной ".", нарушают работу
"-e".

Файлы, длина которых превышает 64K байт, не обрабаты-
ваются.




128
АПК 00210-01 33 01-4

ИМЯ:
du - печать сведений об использовании дисков.

ФОРМАТ:
du [-s] [-a] [имя...]

ОПИСАНИЕ:
Команда du выдает число блоков, занимаемых всеми фай-
лами и справочниками (рекурсивно), содержащмися внутри
каждого заданного справочника или файла "имя". Если
"имя" отсутствует, используется ".".

Ключ "-s" вызывает выдачу только общего итога. Ключ
"-a" вызывает вывод сообщения по каждому файлу. При
отсутствии ключа сообщения генерируются только по
справочникам.

Файлы, которые имеют несколько альтернативных имен,
учитываются только один раз.

ЗАМЕЧАНИЯ:
Если в качестве параметров заданы не справочники и не
указан ключ "-a", то они не распечатываются.

Если имеется слишком много различных альтернативных
имен файлов, команда du учитывает избыточные файлы по
несколько раз.




129
АПК 00210-01 33 01-4

ИМЯ:
ЕС - построитель среды Паскаля

ФОРМАТ:
ЕС

ОПИСАНИЕ:
ЕС принимает на стандартном входе исходный текст прог-
раммы на Паскале и извлекает об'явления. Эта команда
позволяет создавать среду для $x-опции компиляции.











130
АПК 00210-01 33 01-4

ИМЯ:
echo - выдача параметров.

ФОРМАТ:
echo [-n] [парам] ...

ОПИСАНИЕ:
Команда echo записывает свои параметры, разделенные
пробелами и заканчивающиеся символом новой строки, в
стандартный файл вывода. Если используется флаг "-n",
к выводу не добавляется символ новой строки.

Команда echo используется для выдачи диагностических
сообщений в программах интерпретатора команд и для за-
писи постоянных данных в потоках. Для посылки диагнос-
тического сообщения в стандартный файл ошибок выполни-
те команду:

echo "текст сообщения" 1>&2







131
АПК 00210-01 33 01-4

ИМЯ:
ed - строчный редактор текстов.

ФОРМАТ:
ed [-] [-х] [имя]

ОПИСАНИЕ:
Для UNIX-образных систем, ed является стандартным ре-
дактором текстов. При интерактивной работе он уступает
по удобству полиэкранному редактору, но может работать
с любыми терминалами (например, с телетайпами).

Редактор ed работает с копией редактируемого файла.
Сделанные в копии изменения не влияют на исходный файл
до тех пор, пока не будет выдана команда "w" (запись).
Копия редактируемого текста размещается во временном
файле, называемом "буфером".

Если задан параметр "имя", указанный файл считывается
в буфер редактора для последующей обработки. Если ука-
зан ключ "-х", перед чтением файла выполняется команда
"x" для работы с зашифрованными файлами. Ключ "-" по-
давляет печать пояснительных сообщений и используется
при вводе инструкций редактирования из командного
файла.

Команды редактора ed имеют простую и регулярную струк-
туру: 0 или несколько "указателей", за которыми следу-
ет односимвольное "имя команды" и, возможно, парамет-
ры. "Указатели" определяют одну или несколько строк в

132
АПК 00210-01 33 01-4

буфере. Пропущенные адреса дополняются по умолчанию.

Во время работы ed может находиться либо в командном
режиме (когда вводимые строки рассматриваются как
инструкции редактирования), либо в режиме ввода (т.е.
набираемая информация просто переписывается в файл). В
начале сеанса редактор находится в командном режиме.
Если был переход в режим ввода, редактор воспринимает
только одну команду - выход из данного режима (точка в
первой позиции строки).

В редакторе ed в ограниченном виде используется поня-
тие "регулярного выражения". Регулярное выражение оп-
ределяет множество строк символов. Говорят, что член
этого множества соответствует этому регулярному выра-
жению. В приведенном определении регулярных выражений
слово "символ" означает любой символ, за исключением
символа новой строки:

1) Любой символ, за исключением специальных симво-
лов, соответствует самому себе. Специальными сим-
волами являются разделитель регулярных выражений,
знаки "[." и, иногда "^*$";

2) "." соответствует любому символу;

3) "
нием цифры или "()", соответствует этому символу;

4) Непустая строка "s", заключенная в квадратные
скобки ([s] или [^s]), сответствует любому симво-


133
АПК 00210-01 33 01-4

лу,входящему (или не входящему) в строку "s".
Внутри строки "s" символ "
го значения, а "]" может появляться только в ка-
честве первой буквы. Подстрока "a-b", где "a" и
"b" расположены в возрастающем порядке относи-
тельно русского или латинского алфавитов (для
специальных символов относительно кода КОИ-8),
обозначает диапазон символов от "a" до "b", вклю-
чительно;

5) Регулярное выражение вида 1-4, за которым следует
"*", определяет последовательность из 0 или более
соответствий этому регулярному выражению;

6) Регулярное выражение "x", находящееся между "
и ")", соответствует тому же, что и "x";

7) Знак "
той же строке, что и находящееся в скобках регу-
лярное выражение, начинающееся с n-ой "

8) Регулярное выражение "x" вида 1-8, за которым
следует регулярное выражение "y" вида 1-7, соот-
ветствует соответствие для "x", за которым следу-
ет соответствие для "y", причем соответствие для
"x" выбирается как можно большим, однако допуска-
ющим соответствие для "y";

9) Регулярное выражение вида 1-8, которому пред-
шествует "^" (или за которым следует "$"), огра-

134
АПК 00210-01 33 01-4

ничено соответствиями, начинающимися в левом (или
заканчивающимися в правом) конце строки;

10) Регулярное выражение вида 1-9 выбирает самое
длинное и крайнее слева соответствие в строке;

11) Пустое регулярное выражение заменяет последнее
встреченное регулярное выражение.

Регулярные выражения используются в адресах для опре-
деления строк, а также в одной команде (s) для опреде-
ления части строки, которую нужно заменить. Если тре-
буется использовать один из метасимволов регулярных
выражений в качестве обычного символа, этому символу
должна предшествовать "
лам, связывающим регулярные выражения (часто "/"), так
и к самому символу "

Для понимания системы адресации в редакторе ed необхо-
димо представлять себе, что в каждый момент времени
существует "текущая строка". Вообще говоря, текущая
строка представляет собой последнюю строку, обработан-
ную некоторой командой, однако точное влияние на поло-
жение текущей строки рассматривается в описании
команд. Адреса строятся следующим образом.

1) Символ "." адресует текущую строку;

2) Символ "$" адресует последнюю строку буфера;

3) Десятичное число "n" адресует n-ую строку буфера;

135
АПК 00210-01 33 01-4

4) "/x" указывает строку, помеченную именем "x", ко-
торое должно представлять собой малую букву.
Строки помечаются с помощью команды "k", которая
описана ниже;

5) Регулярное выражение, заключенное в символы "/",
указывает строку, которая определяется путем по-
иска вперед от текущей строки до первой строки,
содержащей последовательность символов, соот-
ветствующую данному регулярному выражению. При
необходимости после достижения конца буфера поиск
продолжается с его начала;

6) Регулярное выражение, заключенное в вопроситель-
ные знаки "?", адресует строку, которая определя-
ется путем поиска назад от текущей строки до
первой строки, содержащей последовательность сим-
волов, соответствующую данному регулярному выра-
жению. При необходимости после достижения начала
буфера поиск продолжается с его конца;

7) Адрес, за которым следует знак "+" или знак "-" и
десятичное число, определяет этот адрес плюс (или
минус) указанное количество строк. Знак плюс
может быть опущен;

8) Если адрес начинается со знака "+" или "-", вы-
полняется сложение или вычитание по отношению к
текущей строке. Например, "-5" означает ".-5".

136
АПК 00210-01 33 01-4

9) Если адрес заканчивается знаком "+" или "-", к
нему добавляется (или вычитается) 1. Как
следствие этого правила и правила 8, адрес "-"
относится к строке, которая предшествует текущей
строке. Более того, знаки "+" и "-" в конце обла-
дают эффектом накопления, так что "--" относится
к текущей строке минус 2.

10) Символ "^" в адресах эквивалентен символу "-".

Команды могут требовать ни одного, один или два адре-
са. Команды, в которых не требуется адрес, рассматри-
вают наличие адреса как ошибку. Если в командах, где
требуется один или два адреса, указано недостаточное
количество адресов, принимаются стандартные адреса.
Если в команде указано больше адресов, чем требуется,
используются последние один или два адреса (в зависи-
мости от того, сколько нужно).

Обычно адреса отделяются друг от друга с помощью запя-
той ",". Они могут разделяться также точкой с запятой
";". В этом случае текущая строка "." устанавливается
на первый адрес перед тем, как интерпретируется следу-
ющий. Эта особенность может быть использована при оп-
ределении начальной строки для прямого и обратного по-
иска ("/", "?"). Второй адрес любой двухадресной пос-
ледовательности должен соответствовать строке, следу-
ющей за строкой, которая соответствует первому адресу.

В приведенном списке команд редактора ed стандартные


137
АПК 00210-01 33 01-4

адреса указаны в скобках. Скобки не являются частью
адреса, а используются лишь для того, чтобы показать,
что данные адреса являются стандартными.

Как отмечалось ранее, появление в одной строке нес-
кольких команд в общем случае является ошибкой. Одна-
ко, к большинству команд могут быть добавлены команды
"p" или "l", которые вызывают распечатку текущей стро-
ки в одном из двух форматов.
К командам может также добавляться команда "n", кото-
рая вызывает печать номера строки в выводе команды.
Эти суффиксы могут об'единяться в любом порядке.

(.)a
<текст>
.

Команда дозаписи - считывает указанный текст и
добавляет его после строки с указанным адресом.
"." остается в последней введенной строке, если
она имеется, в противном случае - в адресуемой
строке. В этой команде допускается адрес "0",
при этом текст помещается в начало буфера.

(.,.)c
<текст>
.

Команда замены удаляет адресуемые строки, затем
считывает вводимый текст, который заменяет эти


138
АПК 00210-01 33 01-4

строки. "." остается в последней введеной стро-
ке; если таковых не было, она остается в строке,
предшествовавшей удаленным строкам.

(...) d
Команда удаления удаляет адресуемые строки из
буфера. Текущей становится строка, первоначально
находившаяся после последней удаленной строки.
Если удаленные строки располагались в конце, те-
кущей строкой становится новая последняя строка.

e имя_файла
Команда редактирования вызывает удаление всего
содержимого буфера и последующее считывание в
него файла с указанным именем. "." устанавлива-
ется на последней строке буфера. Печатается ко-
личество считанных символов. "имя_файла" запоми-
нается для возможного использования в качестве
стандартного имени файла в последующих командах
r или w. Если "имя_файла" отсутствует, использу-
ется запомненное имя.

E имя_файла
Эта команда выполняет те же действия, что и ко-
манда "e", за исключением того, что не выдается
диагностических сообщений, если после последнего
изменения буфера не была выдана команда "w".

f имя_файла
Команда печати имени файла распечатывает текущее


139
АПК 00210-01 33 01-4

запомненное имя файла. Если указывается
"имя_файла", текущее запомненное имя файла заме-
няется на "имя_файла".

(1,$) g/регулярное выражение/список команд
В этой команде на первом шаге помечаются все
строки, которые соответствуют заданному регуляр-
ному выражению. После этого для каждой такой
строки выполняется заданный список команд, при-
чем "." первоначально устанавливается в этой
строке. Одна команда или первая из нескольких
команд располагается в той же строке, что и ко-
манда "g". Все строки списка, состоящие из нес-
кольких строк, должны заканчиваться символом
"
ребление команд "a", "i" "c" и связанного с ними
ввода. ".", завершающая режим ввода, может быть
опущена, если она находится в последней строке
списка команд. Команды "g" и "v" в списке команд
не допускаются.

(.)i
<текст>
.

Эта команда вставляет заданный текст перед адре-
суемой строкой. "." остается в последней вводи-
мой строке или, если ее нет, в строке перед ад-
ресуемой строкой. Эта строка отличается от ко-

140
АПК 00210-01 33 01-4

манды а только местом, куда помещается текст.

(.,.+1)j
Эта строка об'единяет адресуемые строки в одну
строку. Промежуточные символы новой строки прос-
то исчезают. "." остается в результирующей стро-
ке.

(.)kh Команда маркирования присваивает адресуемой
строке имя "х", которое должно представлять
собой малую букву. Впоследствии данная строка
может адресоваться с помощью формы адреса "'х".

(.,.)l
Эта команда распечатывает адресуемые строки под-
робным образом: неграфические символы печатаются
в виде двух восьмеричных цифр, а длинные строки
переносятся. Команда "l" может располагаться в
одной и той же строке после любой не связанной с
вводом-выводом команды.

(.,.)ma
Команда пересылки перемещает адресуемые строки и
помещает их после строки, адресуемой с помощью
"a". Последняя из перемещенных строк становится
текущей строкой.

(.,.)n
Команда нумерации распечатывает адресуемые стро-
ки вместе с номерами строк и символом табуляции

141
АПК 00210-01 33 01-4

слева.

(.,.)p
Эта команда распечатывает адресуемые строки. "."
остается в последней распечатанной строке.
Команда p может располагаться в одной и той же
строке после любой не связанной с вводом-выводом
команды.

(.,.)P
Эта команда является синонимом команды "p".

q Команда выхода вызывает выход из редактора ed.
Автоматическая запись в файл не производится.

Q Эта команда аналогична команде "q", за исключе-
нием того, что не выдается диагностических сооб-
щений, если после последнего изменения буфера не
была выдана команда "w".

($)r имя_файла
Команда чтения считывает указанный файл и поме-
щает результат после адресуемой строки. Если имя
файла не указано, используется запомненное имя
файла, если таковое имеется (см. команды "l" и
"f"). Имя файла запоминается, если уже не было
запомненного имени файла. Для команды "r" допус-
кается адрес "0", который приводит к тому, что
файл считывается в начало буфера. Если считыва-
ние прошло успешно, печатается количество счи-

142
АПК 00210-01 33 01-4

танных символов. "." остается в последней счи-
танной из файла строке.

(.,.)s/регулярное выражение/замена/ или
(.,.)s/регулярное выражение/замена/g

Команда подстановки просматривает каждую адресу-
емую строку на предмет соответствия заданному
регулярному выражению. Если после команды указан
индикатор глобального замещения "g", в каждой
строке, в которой обнаружено соответствие, все
соответствующие последовательности символов за-
мещаются указанной "заменой". Если индикатор
глобального замещения отсутствует, заменяется
только первая соответствующая последовательность
символов. Если подстановка не выполняется ни в
одной из адресуемых строк, это является ошибкой.
Для разделения регулярного выражения и замены
вместо "/" может использоваться любой символ
пунктуации. "." остается в последней строке, где
была выполнена подстановка. Амперсанд "&",
встречающийся в замене, заменяется строкой сим-
волов, соответствующей регулярному выражению.
Специальное значение символа "&" в указанном
контексте может быть отменено посредством указа-
ния перед ним "
замещаются текстом, соответствующим n-ому регу-
лярному выражению, заключенному между " и
")". Если имеются вложенные подвыражения в


143
АПК 00210-01 33 01-4

скобках, "n" определяется путем подсчета случаев
употребления " начиная слева. Строки могут
быть разделены посредством подстановки в них
символов новой строки. Символы новой строки в
строке замены должны быть выделены посредством
указания перед ними символа "
заключительных разделителя могут быть опущены,
подразумевая суффикс "p". Специальная форма ко-
манды "s" без последующих разделителей повторяет
последнюю команду подстановки для адресуемых
строк. После "s" могут следовать буквы "r" (ис-
пользовать последнее регулярное выражение в
левой стороне вместо последней команды подста-
новки в левой стороне), "p" (дополняет установку
суффикса "p" для предыдущей установки) и g (до-
полняет установку суффикса "g"). Эти буквы могут
об'единяться в любом порядке.