Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Страницы справочного руководства ОС UNIX на русском : man diff(1)


Информационный Канал Subscribe.Ru

Выпуск 106

man diff(1)

Сегодняшний выпуск посвящен команде diff(1), которая позволяет сравнить два файла или каталога. Перевод закончен 27 апреля 2003 года по справочному руководству Solaris 8.


diff(1)

НАЗВАНИЕ

diff - выдача построчных различий между парами текстовых файлов

СИНТАКСИС

diff [-bitw] [-c | -e | -f | -h | -n] файл1 файл2
diff [-bitw] [ -C число ] файл1 файл2
diff [-bitw] [ -D строка ] файл1 файл2
diff [-bitw] [ -c | -e | -f | -h | -n] [-l] [-r] [-s] [-S имя] каталог1 каталог2

ОПИСАНИЕ

Утилита diff сравнивает содержимое файла1 и файла2, и выдает в стандартный выходной поток список изменений, необходимых для преобразования файла1 в файл2. Этот список должен быть минимальным. Если файлы идентичны, никакие результаты не выдаются.

Обычный результат содержит строки следующего вида:

 
n1 a n3,n4 
n1,n2 d n3 
n1,n2 c n3,n4 

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

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

ОПЦИИ

-b
Игнорировать хвостовые пробелы (символы пробела и табуляции) и считать любые строки из пробелов совпадающими.

-i
Игнорировать регистр символов; например, 'A' и 'a' при сравнении будут считаться совпадающими.

-t
Заменять символы табуляции пробелами в строках результата. Обычно или при задании опции -c в результаты добавляются символы в начале каждой строки, которые могут нарушить отступы в исходных строках, что затруднит их интерпретацию. Эта опция сохраняет отступы в исходных строках.

-w
Игнорировать все пробелы (символы пробела и табуляции) и считать все строки пробелов одинаковыми; например, при установке этой опции строки 'if ( a == b )' и 'if(a==b)' будут считаться совпадающими.

Следующие опции - взаимоисключающие:

-c
Выдавать листинг различий с тремя строками контекста. При указании этой опции формат результата несколько изменяется: результат начинается с идентификации сравниваемых файлов и их дат создания, а затем каждое изменение отделяется строкой из двенадцати звездочек (*). Строки, удаленные из файла1, помечаются минусом (-); строки, добавленные в файл2, помечаются плюсом (+). Измененные строки в обоих файлах помечаются восклицательным знаком (!).

-C число
Выдает листинг различий, идентичный выдаваемому опцией -c, но с указанным числом строк контекста.

-e
Выдать сценарий, состоящий только из команд a, c и d редактора ed, который позволит пересоздать файл2 по файлу1. В сочетании с опцией -e, следующая командная строка интерпретатора может помочь поддерживать несколько версий файла. Необходим только исходный файл ($1) и цепочка сценариев ed для перехода от версии к версии ($2, $3, ...), построенные с помощью утилиты diff. В стандартный выходной поток будет выдана "последняя версия".
 
(shift; cat $*; echo '1,$p') | ed - $1 
За исключением редких случаев, diff строит минимально достаточный набор различий между файлами.

-f
Выдать аналогичный сценарий с командами в обратном порядке - для редактора ed он не подходит.

-h
Выполнить быстрое, но приблизительное сравнение. Эта опция срабатывает только если различия невелики и легко выявляются, но зато сравнивать можно файлы неограниченной длины. Опции -c, -e, -f и -n совместно с -h использовать нельзя. Утилита diff при задании этой опции в каталоги не переходит.

-n
Выдать сценарий, аналогичный выдаваемому при указании опции -e, но в обратном порядке и количеством строк для каждой команды вставки или удаления.

-D строка
Создает общую версию файла1 и файла2 с директивами препроцессора языка C, так что при компиляции результата без определенной строки будет получено то же самое, что и при компиляции файла1, а если строка определена, - то же самое, что и при компиляции файла2.

Следующие опции используются при сравнении каталогов:

-l
Выдавать результат в "длинном" формате. Перед вызовом diff, каждый файл пропускается через фильтр pr(1) для разбиения на страницы. Другие различия запоминаются и выдаются после всех различий текста в файлах.

-r
Применять diff рекурсивно ко всем общим подкаталогам.

-s
Выдавать информацию об идентичных файлах; обычно эти файлы в результатах не упоминаются.

-S имя
Начинает сравнение каталогов с середины, с файла с указанным именем.

ОПЕРАНДЫ

Поддерживаются следующие операнды:

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

каталог1, каталог2
Полные имена сравниваемых каталогов.

Если только один из файлов является каталогом, утилита diff будет применяться к другому файлу и к одноименному (имя которого соответствует последнему компоненту имени файла) с ним файлу в каталоге.

ИСПОЛЬЗОВАНИЕ

Описание работы утилиты diff с файлами длиной более 2 Гбайт (231 байт) см. на странице справочного руководства largefile(5).

ПРИМЕРЫ

Пример 1: Пример использования команды diff.

Если dir1 - каталог, содержащий подкаталог x, dir2 - каталог, содержащий подкаталог x, оба каталога, dir1/x и dir2/x содержат файлы date.out, а каталог dir2/x содержит также файл y, команда:

example% diff -r dir1 dir2
может выдать результат, аналогичный следующему:
Common subdirectories: dir1/x and dir2/x Only in dir2/x: y diff -r dir1/x/date.out dir2/x/date.out 1c1 < Mon Jul 2 13:12:16 PDT 1990 --- > Tue Jun 19 21:41:39 PDT 1990

ПЕРЕМЕННЫЕ СРЕДЫ

Описание следующих переменных среды, влияющих на работу diff, см. на странице справочного руководства environ(5): LC_CTYPE, LC_MESSAGES, LC_TIME NLSPATH.

TZ
Задает локаль, влияющую на часовой пояс, используемый при вычислении временных отметок, которые выдаются при указании опций -C и -c.

СТАТУС ВЫХОДА

Команда возвращает следующие статусы выхода:

0 Различий не найдено.
1 Различия найдены.
>1 Произошла ошибка.

ФАЙЛЫ

/tmp/d?????
временные файлы, используемые при сравнении

/usr/lib/diffh
выполняемый файл для реализации опции -h

АТРИБУТЫ

Описание следующих атрибутов см. на странице справочного руководства attributes(5):

ТИП АТРИБУТА ЗНАЧЕНИЕ АТРИБУТА
Доступен в пакете SUNWesu
CSI Включено

ССЫЛКИ

bdiff(1), cmp(1), comm(1), dircmp(1), ed(1), pr(1), sdiff(1), attributes(5), environ(5), largefile(5)

ПРИМЕЧАНИЯ

Сценарии редактирования, выдаваемые опциями -e или -f, не позволяют создавать строки, состоящие из одной точки (.).

Сообщение Missing NEWLINE в конце файла свидетельствует о том, что в последней строке соответствующего файла нет символа новой строки. Если в результате последние строки файлов получаются разными, они помечаются и выдаются, хотя на вид они кажутся одинаковыми.

Последнее изменение: 20 декабря 1996 года

Copyleft (no c) - Fuck copyright!, 2003 В. Кравчук, OpenXS Initiative, перевод на русский язык


В следующем выпуске

Перевод man group(4) ОС Solaris 8. Следите за новостями на сайте рассылки.

С наилучшими пожеланиями,

  В.К.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное