Сравнение и объединение файлов 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'
Задает сравнительный формат. См. "Сравнительный формат".
Вперед Назад Содержание