DIFF(1) DIFF(1)
НАЗВАНИЕ
diff - выявление различий между файлами
СИНТАКСИС
diff [-e] [-f] [-b] [-h] файл1 файл2
ОПИСАНИЕ
Команда diff выдает на стандартный вывод те строки фай-
лов, которые нужно изменить, чтобы привести файлы в со-
ответствие друг с другом. Если вместо файла1 или файла2
стоит -, то используется стандартный ввод. Если файл1
(файл2) является каталогом, то используется файл из
этого каталога с именем файл2 (файл1). При нормальной
работе вывод содержит строки следующего вида:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
Эти строки напоминают команды редактора ed для преобра-
зования файла1 в файл2. Номера после букв относятся к
файлу2. Равным образом при взаимной замене a на d и
чтении строк в обратном порядке получается информация о
том, как преобразовать файл2 в файл1. Как и в редакторе
ed, пары, состоящие из одинаковых номеров n1 = n2 или
n3 = n4, сокращаются до одного номера.
За каждой из этих строк следуют затрагиваемые ею строки
файла1, отмеченные знаком <, а затем соответствующие
строки файла2, отмеченные знаком >.
Допустимые опции:
-b Проигнорировать пробелы и символы табуляции в кон-
це строк; остальные цепочки пробелов и табуляций
считать одинаковыми.
-e Сгенерировать набор команд a, c и d редактора ed,
который может быть использован для воссоздания
файла2 из файла1.
-f Выдать аналогичный набор, но в обратном порядке;
для ed этот набор не используется.
-h Выполнить сравнение быстро, но без гарантий. Ко-
манда с этой опцией работоспособна, только если
различающиеся фрагменты коротки и четко разделены;
однако в таком случае она применима к файлам неог-
раниченной длины. Опции -e и -f несовместимы с -h.
В сочетании с опцией -e приведенная ниже shell-процеду-
ра может быть полезной для поддержки нескольких версий
файла. При этом необходим только файл-источник ($1) и
цепочка наборов команд для ed ($2, $3, ...), преобра-
зующих одну версию в другую и изготовленных посредством
diff. "Последняя версия" получается как стандартный вы-
вод процедуры
(shift; cat $*; echo '1,$p') | ed - $1
За исключением редких случаев diff находит наименьшее
достаточное множество отличий в файлах.
ФАЙЛЫ
/tmp/d?????
/usr/lib/diffh Для опции -h.
СМ. ТАКЖЕ
cmp(1), comm(1), ed(1)
КОДЫ ЗАВЕРШЕНИЯ
0 Различий нет.
1 Различия есть.
2 При выполнении команды зафиксированы ошибки.
СЮРПРИЗЫ
Наборы команд, получаемые по опциям -e и -f, не учиты-
вают возможности возникновения строк, состоящих из
единственной точки (.).
|