Сравнение и объединение файлов diff, diff3, sdiff, cmp, patch : Запуск 'diff'

Вперед Назад Содержание

13. Запуск 'diff'

Формат запуска команды 'diff' следующий:

      diff OPTIONS... FROM-FILE TO-FILE   
В простейшем случае, 'diff' сравнивает содержимое двух файлов FROM-FILE и TO-FILE. Имя файла '-' обозначает текст, считываемый с помощью стандартного ввода. В частности, 'diff - -' сравнивает копию стандартного ввода саму с собой.

Если FROM-FILE - каталог, а TO-FILE - нет, 'diff' сравнивает файл из FROM-FILE, чье имя совпадает с TO-FILE; и наоборот. В этой ситуации, файл, не являющийся каталогом, не должен быть '-'.

Если и FROM-FILE, и TO-FILE - каталоги, 'diff' сравнивает соответствующие файлы в этих каталогах, в алфавитном порядке; это сравнение не является рекурсивным, если не указана опция '-r' или '--recursive'. 'diff' никогда не сравнивает содержимое каталогов, как файлов. Файл, заданный полностью, не может быть введен стандартным вводом, потому что стандартный ввод безымянен и понятие "файл с тем же именем" неприменимо.

Опции 'diff' начинаются с '-', так что обычно имена FROM-FILE и TO-FILE не могут начинаться с '-'. Однако, '--' как аргумент сам по себе заставляет воспринимать оставшиеся аргументы как имена файлов, даже если они начинаются с '-'.

Код завершения 0 означает, что различий не найдено, 1 - найдены некоторые различия, 2 - обнаружена ошибка.

13.1 Опции 'diff'

Далее приводится суммарное изложение опций воспринмаемых GNU 'diff'. Большинство опций имеют два эквивалентных имени, одно из которых - буква, предваряемая '-', а второе - длинное имя, предваряемое '--'. Объединение однобуквенных опций (если они не имеют аргумента) может быть скомбинировано в одну слово командой строки: '-ac' эквивалентно '-a -c'. Опции с длинными именами могут быть сокращены любым уникальным началом их имени. Квадратные скобки ([ и ]) означают, что у опции необязательный аргумент.

'-LINES'

Показывает LINES (целое число) строк контекста. Эта опция не задает сама по себе формат вывода; и не действует без опции '-c' (см. Контекстный формат::.) или '-u' (см. Унифицированный формат::.). Эта опция является устаревшей. Для правильной работы, 'patch' обычно необходимо по крайней мере две строки контекста.

'-a' Воспринимает все файлы как текстовые и сравнивает их строка за строкой, даже если они не похожи на текст. Cм. "Двоичные файлы и принудительное текстовое сравнение".

'-b'

Игнорирует изменения в количестве "пропусков" (пробелов, табуляций, и т.д.). См. "Пропуски".

'-B'

Игнорирует изменения - вставки и удаления пустых строк. См. "Пустые строки".

'--binary'

Считывает и записывает данные в двоичном формате. См. "Двоичный формат".

'--brief'

Сообщает только отличаются ли файлы, не уточняя различий.

'-c'

Задает контекстный формат.

'-C LINES' или '--context[=LINES]'

При использовании контекстного формата, показывает LINES (целое) строк контекста, или три, если LINES не указано. Для правильной работы, 'patch' необходимо по крайней мере две строки контекста.

'--changed-group-format=FORMAT'

Использует FORMAT для вывода групп строк содержащих различающиеся строки из обоих файлов в формате if-then-else. Cм. "Формат групп строк".

'-d'

Изменяет алгоритм, возможно находя меньший набор изменений. Это замедляет 'diff' (иногда очень сильно). См. "Издержки в производительности diff".

'-D NAME'

Задает объединенный формат вывода '#ifdef', в соответствии с макросом препроцессора NAME. См. "Детальное описание формата if-then-else".

'-e' или '-ed'

Задает вывод в формате 'ed' скрипта. См. "ed-скрипт формат".

'--exclude=PATTERN'

При сравнивании каталогов, игнорирует файлы и подкаталоги, имена которых совпадают с шаблоном. См. "Сравнение каталогов".

'--exclude-from=FILES'

При сравнивании каталогов, игнорирует файлы и подкаталоги, начинающиеся с шаблонов, содержащихся в FILE. См. "Сравнение каталогов".

'--expand-tabs'

Заменяет табуляцию на пробелы при выводе, для сохранения выравнивания по табуляции во входных файлах.

'-f'

Задает формат вывода подобный 'ed' скрипту, но с изменением порядка ханков. См. "Прямой ed формат".

'-F REGEXP'

В контекстном и унифицированном форматах, для каждого ханка различий, показывает ближайшую предшествующую строку, соответствующую регулярному выражению REGEXP. См. "Задание заголовков".

'--forward-ed'

Задает формат вывода подобный 'ed' скрипту, но с изменением порядка ханков. См. "Прямой ed формат".

'-h'

Эта опция в данный момент не используется; присутствует для совместимости с другими версиями Unix.

'-H'

Использует эвристику для быстрой обработки больших файлов, имеющих много рассеянных маленьких изменений. Cм. "Издержки в производительности diff".

'--horizon-lines=LINES'

Не дает отбрасывать последние LINES строк начала и первые LINES строк конца файла. См. "Издержки в производительности diff".

'-i'

Игнорирует изменения в строчных и прописных буквах, считая их эквивалентными.

'-I REGEXP'

Игнорирует изменения - вставки и удаления строк, соответствующих регулярному выражению REGEXP.

'--ignore-all-space'

Игнорирование "пропусков" при сравнении строк. См. "Пропуски".

'--ignore-blank-lines'

Игнорирует изменения - вставки и удаления пустых строк. См. "Пустые строки".

'--ignore-case'

Игнорирует изменения в строчных и прописных буквах, считая их эквивалентными.

'--ignore-matching-lines=REGEXP'

Игнорирует изменения - вставки и удаления строк соответствующих регулярному выражению REGEXP.

'--ignore-space-change'

Игнорирует изменения в количестве "пропусков". См. "Пропуски".

'--intial-tab'

Заменяет на табуляцию пробелы перед текстом строки в нормальном или контекстном формате. Благодаря этому выравнивание по табуляции в строках выглядит нормально.

'-l'

Пропускает результаты работы через 'pr' для разбивки на страницы. См. "Разбивка результатов diff на страницы".

'-L LABEL'

Использует LABEL вместо имени файла в заголовках контекстного (см. "Контекстный формат") и унифицированного формате (см. "Унифицированный формат").

'--label=LABEL'

Использует LABEL вместо имени файла в заголовках контекстного (см. "Контекстный формат") и унифицированного (см. "Унифицированный формат") форматов.

'--left-column'

Печатает только левую колонку для двух общих строк в сравнительном формате. См. "Сравнительный формат".

'--line-format=FORMAT'

Использует FORMAT для вывода всех входных строк в формате if-then-else. См. "Строчный формат".

'--minimal'

Изменяет алгоритм, возможно находя меньший набор изменений. Это замедляет 'diff' (иногда очень сильно). См. "Издержки в производительности diff".

'-n'

Задает RCS-формат списков разлчий; аналогичен '-f' за исключением того, что в каждой команде указывает номер строки, на которую она действует.

'-N' или '--new-file'

При сравнении каталогов, если файл найден только в одном каталоге, считает что он находится и во втором, но является пустым. См. "Сравнение каталогов".

'-new-group-format=FORMAT'

Использует FORMAT для вывода группы строк, взятой из второго файла (присутствующей только в нем) в формате if-then-else. См. "Форматы группы строк".

'-old-group-format=FORMAT'

Использует FORMAT для вывода группы строк, взятой из первого файла (присутствующей только в нем) в формате if-then-else. См. "Форматы группы строк".

'-old-line-format=FORMAT'

Использует FORMAT для вывода строки, взятой из первого файла (присутствующей только в нем) в формате if-then-else. См. "Форматы группы строк".

'-p'

Показывает к какой функции C относится каждое изменение. См. "Заголовки функций С".

'-P'

При сравнении каталогов, если файл находится только в одном каталоге из двух, считает что он находится и в первом, но является пустым. См. "Сравнение каталогов".

'--paginate'

Пропускает результаты работы через 'pr' для разбивки на страницы. См. "Разбивка результатов diff на страницы".

'-q'

Сообщает только что файлы различаются, не уточняя различий.

'-r'

При сравнивании каталогов, рекурсивно сравнивает все найденные подкаталоги. См. "Сравнение каталогов".

'-rcs'

Задает RCS-формат; аналогичен '-f', за исключением того, что в каждой команде указывает номер строки, на которую она действует.

'-recursive'

При сравнивании каталогов, рекурсивно сравнивает все найденные подкаталоги. См. "Сравнение каталогов".

'--report-idential-files'

Сообщает об одинаковых файлах. См. "Сравнение каталогов".

'-s'

Сообщает об одинаковых файлах. См. "Сравнение каталогов".

'-S FILE'

При сравнивании каталогов начинает с файла FILE. Это позволяет возобновлять прерванное сравнение. См. "Сравнение каталогов".

'-sdiff-merge-assist'

Печатает дополнительную информацию в помощь 'sdiff'. 'sdiff' использует эту опцию при запуске 'diff'. Эта опция не задумана для прямого использования пользователями.

'--show-c-function'

Показывает к какой функции C относится каждое изменение. См. "Заголовки функций С".

'--show-function-line=REGEXP'

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

'--side-by-side'

Задает сравнительный формат. См. "Сравнительный формат".

'--speed-large-files'

Использует эвристику для быстрой обработки больших файлов, имеющих много рассеянных маленьких изменений. Cм. "Издержки в производительности diff".

'--starting-file=FILE'

При сравнивании каталогов начинает с файла FILE. Это позволяет возобновлять прерванное сравнение. См. "Сравнение каталогов".

'--suppress-common-lines'

Не печатет общие строки в сравнительном формате. См. "Сравнительный формат".

'-t'

Заменяет табуляцию на пробелы при выводе, для сохранения выравнивания по табуляции во входных файлах.

'-T'

Заменяет на табуляцию пробелы перед текстом строки в нормальном или контекстном формате. Благодаря этому выравнивание по табуляции в строках выглядит нормально.

'--text'

Рассматривает все файлы как текстовые и сравнивает их строка за строкой, даже если они не похожи на текст.

'-u'

Задает унифицированный формат. См. "Унифицированный формат".

'--unchanged-group-format=FORMAT'

Использует FORMAT для вывода общей группы строк, взятой из обоих файлов в формате if-then-else. См. "Строчный формат".

'--unchanged-line-format=FORMAT'

Использует FORMAT для вывода общей строки, взятой из обоих файлов в формате if-then-else. См. "Строчный формат".

'--unidirectional-new-file'

При сравнении каталогов, если файл находится только в одном каталоге из двух, считает что он находится и в первом, но является пустым. См. "Сравнение каталогов".

'-U LINES' или '--unified[=LINES]'

Задает унифицированный формат, показывающий LINES (целое) строк контекста, или три, если LINES не задано. См. "Унифицированный формат". Для правильной работы, 'patch' необходимо по крайней мере две строки контекста.

'-v' или '--version'

Выводит номер версии 'diff'.

'-w'

Игнорирует "пропуски" при сравнении строк.

'-W COLUMNS' или '--width=COLUMNS'

Задает ширину вывода равную COLUMNS в сравнительном формате. См. "Сравнительный формат".

'-x PATTERN'

При сравнивании каталогов, игнорирует файлы и подкаталоги, имена которых начинаются с PATTERN. См. "Сравнение каталогов".

'-X FILE'

При сравнивании каталогов, игнорирует файлы и подкаталоги, соответствующие шаблонам, содержащимся в файле FILE. начинающиеся с $$patterns$$, содержащихся в FILE. См. "Сравнение каталогов".

'-y'

Задает сравнительный формат. См. "Сравнительный формат".


Вперед Назад Содержание