diff

Сравнение двух файлов, построчно (GNU)

Синтаксис:

diff [опция] файл1 файл2

Опции:

-i
--ignore-case
Игнорировать различия в регистре символов в содержимом файлов.
--ignore-file-name-case
Игнорировать регистр при сравнении имен файлов.
--no-ignore-file-name-case
Учитывать регистр при сравнении имен файлов.
-E
--ignore-tab-expansion
Игнорировать изменения, связанные с заменой символов табуляции пробелами.
-b
--ignore-space-change
Игнорировать изменения количества пробельных символов.
-w
--ignore-all-space
Игнорировать все пробельные символы.
-B
--ignore-blank-lines
Игнорировать изменения, касающиеся только вставки или удаления пустых строк.
-I регулярное_выражение
--ignore-matching-lines=регулярное_выражение
Игнорировать изменения, касающиеся только вставки и удаления строк, совпадающих с регулярным_выражением.
--strip-trailing-cr
Удалить из ввода завершающие символы перевода строки.
-a
--text
Обработать все файлы как текст.
-c
-C число
--context[=число]
Выводить указанное число (значение по умолчанию 3) строк скопированного контекста.
-u
-U кол-во
--unified[=кол-во]
Выводить указанное число (значение по умолчанию 3) строк унифицированного контекста.
--label метка
Использовать в выводе метку вместо имени файла. Эту опцию можно указать дважды; первая применяется к файл1, вторая – к файл2.
-p
--show-c-function
Показывать, внутри каких функций языка C происходит каждое изменение.
-F RE
--show-function-line=RE
Показывать самую новую строку, которая соответствует данному регулярному выражению.
-q
--brief
Выводить информацию только о факте наличия или отсутствия различий в файлах.
-e
--ed
Выводить сценарий ed.
--normal
Отображать различия в стандартном формате.
-n
--rcs
Отображать различия в формате RCS.
-y
--side-by-side
Отображать вывод в двух столбцах.
-W число
--width=число
Выводить не более указанного числа (значение по умолчанию 130) печатных колонок.
--left-column
Выводить только левую колонку для двух общих (для обоих файлов) строк.
--suppress-common-lines
Не отображать общие для обоих файлов строки.
-D имя
--ifdef=имя
Выводить объединенный файл для отображения различий #ifdef имя.
--GTYPE-group-format=GFMT
Использовать указанный формат для вывода групп строк в формате if-then-else. GTYPE может принимать значение old, new, changed или unchanged. GFMT может содержать:
%<
Строки из файл1
%>
Строки из файл2
%=
Строки, общие для файл1 и файл2.
%[–][ширина][.[prec]]{doxX}буква
Использовать данную спецификацию стиля printf() для определенной буквы. Буквы для новой группы представлены ниже; для старой группы используйте строчные буквы:
  • F – номер первой строки.
  • L – номер последней строки.
  • N – количество строк = L-F+1.
  • E – F-1.
  • M – L+1.
%%
Литерал %.
%c'C'
Одиночный символ, 'C'.
%c'\OOO'
Символ с данным восьмеричным кодом, 'OOO'.
--line-format=LFMT
Использовать данный формат для вывода всех строк ввода в формате if-then-else.
--LTYPE-line-format=LFMT
Использовать данный формат для вывода отдельных строк в формате if-then-else. LTYPE может принимать значение old, new или unchanged. LFMT может содержать:
%L
Содержимое строки.
%l
Содержимое строки, исключая какой-либо конечный перевод строки.
%[–][ширина][.[prec]]{doxX}n
Использовать указанную спецификацию стиля printf для номеров вводимых строк.
%%
Литерал %.
%c'C'
Одиночный символ, 'C'.
%c'\OOO'
Символ с данным восьмеричным кодом, 'OOO'.
-l
--paginate
Передать вывод команде pr для разбития его на страницы.
-t
--expand-tabs
Преобразовать символы табуляции в пробелы при выводе.
-T
--initial-tab
Выводить перед строкой текста табуляцию вместо пробела.
-r
--recursive
Рекурсивно сравнить любые найденные подкаталоги.
-N
--new-file
При сравнении каталогов, если файл найден только в одном каталоге, то считать, что он существует и в другом каталоге, но является пустым.
--unidirectional-new-file
При сравнении каталогов, если файл существует только во втором каталоге, то считать, что он есть и в другом каталоге, но только пустой.
-s
--report-identical-files
Сообщить о том, что файлы являются одинаковыми.
-x шаблон
--exclude=шаблон
Исключить файлы, соответствующие заданному шаблону.
-X файл
--exclude-from=файл
Исключить файлы, соответствующие какому-либо шаблону в файл.
-S файл
--starting-file=файл
При сравнении каталогов начинать с файла файл.
--from-file=файл1
Сравнить файл1 со всеми операндами. Аргумент файл1 также может быть именем каталога.
--to-file=файл2
Сравнить все операнды с файл2. Аргумент файл2 может также быть именем каталога.
--horizon-lines=кол-во
Сохранить кол-во строк общего префикса и суффикса.
-d
--minimal
Интенсивный поиск минимального набора изменений.
--speed-large-files
Предположить наличие больших файлов, которые содержат несколько небольших изменений, разбросанных по файлу, для ускорения обработки.
-v
--version
Вывести информацию о версии.
--help
Вывести справку.
файл1
файл2
Сравнивать путевые имена файлов. Путевые имена файлов могут быть в следующих формах: Если указана опция --from-file или --to-file, ограничения для файлов отсутствуют. Если вместо имени файла указано тире (-), утилита diff считывает из стандартного потока ввода.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита diff сообщает о различиях между двумя файлами.


Note: Если утилита diff используется для сравнения двоичных файлов, то diff просто выводит отчет о наличии различий между файлами. Для просмотра различий между двумя двоичными файлами используется утилита cmp.

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

Возвращаемое значение:

0
Различий не обнаружено.
1
Обнаружены различия.
>1
Возникла ошибка.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино»

В ЗОСРВ «Нейтрино» редакции 2020 утилита обновлена до версии 3.7 (diffutils)

Тематические ссылки:

cksum, cmp, diff3, patch, wc




Предыдущий раздел: Утилиты