DIFF(1) DIFF(1) НАЗВАНИЕ diff - выявление различий между файлами СИНТАКСИС |diff [-b] [-e] [-f] [-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, не учиты- вают возможности возникновения строк, состоящих из единственной точки (.).