Документация по LinuxLinuxDoc.Ru 🔍

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

НАЗВАНИЕ
diff - находит различия между двумя файлами

СИНТАКСИС
diff [опции] файл-1 файл-2

ОПИСАНИЕ
В самом простом случае diff сравнивает содержимое двух
файлов: файл-1 и файл-2. Если имя файла задано как -, то
это означает, что будет использоваться стандартный ввод.
Команда diff - - сравнивает стандартный ввод с этим же
стандартным вводом. Если файл-1 - это каталог, а файл-2 -
нет, то diff сравнивает файл, находящийся в каталоге
файл-1, имя которого совпадает с именем файла-2, и
наоборот. В этом случае файл (не каталог) не может быть -.
Если и файл-1, и файл-2 - это каталоги, то diff сравнивает
соответствующие файлы в обоих каталогах в алфавитном
порядке; это сравнение не будет рекурсивным, если не
задана опция -r или --recursive. diff никогда не
сравнивает компоненты содержимого каталога (так же, как
если бы он был файлом). Полностью заданное имя файла не
может быть стандартным вводом, потому что стандартный ввод
не имеет имени. В связи с этим указание ``файл с тем же
именем'' не работает. Опции diff обычно начинаются с
символа -, поэтому обычно имена файл-1 и файл-2 не могут
начинаться с -. Однако, если использовать знак -- в
качестве аргумента, то это приведет к тому, что все
следующие параметры команды воспринимаются как имена
файлов, даже если они начинаются с -.

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

-N Показать N (целое число) строк содержимого. Эта
опция не задает формат вывода; она сама по себе не
имеет никакого эффекта, если не используется опция
-c или -u. Эта опция устарела. Для нормальной
работы patch обычно требуется как минимум 2 строки
содержимого.

-a Считывает все файлы как текстовые и сравнивает их
построчно, даже если они не похожи на текстовые.

-b Игнорирует изменения в количестве пустых мест.

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

--brief
Определяет лишь тот факт, что файлы различаются, не
вдаваясь в суть этих различий.

-c Использует контекстный формат вывода.

-C N
--context[=N]
Использует контекстный формат вывода, показывая N
(целое число) строк контекста или три строки, если
количество строк lines не задано. Для нормальной
работы patch требуется как минимум две строки
контекста.

--changed-group-format=формат
Использовать формат для вывода груп строк,
содержащих различия между файлами, в формате if-
then-else (если-то-иначе).

-d Изменяет алгоритм сравнения для поиска
незначительных различий. В результате этого diff
будет работать медленнее (иногда значительно
медленнее).

-D имя Создает объединенный формат if-then-else, который
зависит от параметра имя макроса препроцессора.

-e
--ed Создает на выходе работающий скрипт для редактора
ed.

--exclude=маска
При сравнении каталогов игнорирует файлы и
подкаталоги, имена которых соответствуют параметру
маска.

--exclude-from=файл
При сравнении каталогов игнорируются файлы и
подкаталоги, имена которых соответствуют маскам,
находящимся в аргументе файл.

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

-f Создает выходной файл в формате скрипта ed так,
чтобы изменения шли в том порядке, в котором они
внесены в файл.

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

--forward-ed
Создает выходной файл в формате скрипта ed так,
чтобы изменения шли в том порядке, в котором они
внесены в файл.

-h Эта опция неэффективна в работе: она существует для
совместимости с Unix.

-H Использует эвристический анализ для обработки
больших файлов, в которые внесены множественные
незначительные изменения.

--horizon-lines=N
Не игнорирует последние N строк общего префикса и
первые N строк общего суффикса.

-i Игнорирует различия в регистре букв.

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

--ifdef=имя
Использует объединенный формат if-then-else,
зависящий от аргумента имя макроса препроцессора.

--ignore-all-space
Игнорирует пустое пространство при сравнении строк.

--ignore-blank-lines
Игнорирует изменения, состоящие в наличии или
отсутствии пустых строк.

--ignore-case
Игнорирует различия в регистре: считает строчные и
прописные буквы идентичными.

--ignore-matching-lines=регулярное_выражение
Игнорирует изменения, состоящие в добавлении или
удалении строк, соответствующих аргументу
регулярное_выражение.

--ignore-space-change
Игнорирует изменения в количестве непечатаемых
символов (пробелов, табуляции и т.д.).

--initial-tab
Выводит табуляцию вместо пробела до начала строки в
обычном или контекстном выводе. В результате этого
табуляция в самой строке будет правильнее.

-l Обрабатывает результат программой pr для разделения
его на страницы.

-L метка
--метка=метка
метка используетса в заголовках контекстного и
унифицированного форматов, вместо имени файла.

--left-column
Выводит только левую колонку двух общих строк при
двухколоночном выводе.

--line-format=формат
Использует формат для вывода всех входных строк в
формате if-then-else.

--minimal
Изменяет алгоритм сравнения для поиска
незначительных различий. В результате этого diff
будет работать медленнее (иногда значительно
медленнее).

-n Выводит различие в формате RCS; это практически
аналогично -f за исключением того, что каждая
команда задает количество строк, подвергающихся
изменению.

-N
--new-file
Если при сравнении каталогов один из файлов найден
только в одном каталоге, то считать, что он есть и
в другом каталоге и он пуст.

--new-group-format=формат
При выводе в формате if-then-else использовать
формат для вывода групп строк, взятых только из
второго файла.

--new-line-format=формат
При выводе в формате if-then-else использовать
формат для вывода строк, взятых только из второго
файла.

--old-group-format=формат
При выводе в формате if-then-else использовать
формат для вывода групп строк, взятых только из
первого файла.

--old-line-format=формат
При выводе в формате if-then-else использовать
формат для вывода строк, взятых только из первого
файла.

-p Вывести список функций С, в которые внесены
изменения.

-P Если при сравнении каталогов файл есть только во
втором, то считать, что он есть и в первом каталоге
и он пуст.

--paginate
Обрабатывает результат программой pr для разделения
его на страницы.

-q Устанавливает лишь факт, что файлы различаются, не
определяя сути этих различий.

-r При сравнении каталогов рекурсивно сравнивать
содержимое подкаталогов (если таковые есть).

--rcs Выводит различие в формате RCS; это практически
аналогично -f за исключением того, что каждая
команда задает количество строк, подвергающихся
изменению.

--recursive
При сравнении каталогов рекурсивно сравнивать
содержимое подкаталогов (если таковые есть).

--report-identical-files
-s Выводит сообщения, если два файла идентичны.

-S файл
При сравнении каталогов начать сравнение с файла
файл. Это можно использовать для продолжения
прерванного сравнения.

--sdiff-merge-assist
Выводит дополнительную информацию, необходимую
sdiff. sdiff использует эту опцию при запуске
diff. Эта опция не предназначена для прямого
запуска пользователями.

--show-c-function
Вывести список функций С, в которые внесены
изменения.

--show-function-line=регулярное_выражение
В контекстом и унифицированном форматах для каждого
блока изменений выводит строку, предшествующую этим
изменениям, соответствующую аргументу
регулярное_выражение.

--side-by-side
Использует двухколоночный вывод.

--speed-large-files
Использует эвристический анализ для обработки
больших файлов, в которые внесены разбросанные
множественные, но незначительные изменения.

--starting-file=файл
При сравнении каталогов начать сравнение с файла
файл. Эту опцию можно использовать для продолжения
прерванного сравнения.

--suppress-common-lines
Не выводит общие строки при двухколоночном выводе.

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

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

--text Считывает все файлы, как текстовые и сравнивает их
построчно, даже если они не похожи на текстовые.

-u Использует унифицированный формат вывода.

--unchanged-group-format=формат
Использует формат для вывода групп строк,
совпадающих в обоих файлах, в формате if-then-else.

--unchanged-line-format=формат
Использует формат для вывода совпадающих в обоих
файлах строк в формате if-then-else.

--unidirectional-new-file
Если при сравнении каталогов файл есть только во
втором, то считать, что он есть и в первом каталоге
и он пуст.

-U N
--unified[=N]
Использует унифицированный формат вывода, показывая
N (целое число) строк контекста или 3 строки, если
число N не задано. Для нормальной работы patch
требуется как минимум две контекстные строки.

-v
--version
Выводит текущую версию программы diff.

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

-W N
--width=N
Выводит колонки шириной N символов при
двухколоночном выводе.

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

-X файл
При сравнении каталогов игнорирует файлы и
подкаталоги, имена которых соответствуют маскам,
находящимся в аргументе файл.

-y Использует двухколоночный вывод.

ДИАГНОСТИКА
Коды завершения программы: 0 - различий не найдено, 1 -
найдены различия между файлами, 2 - возникла какая-либо
ошибка.
Читать новости Linux в Telegram
Linux - diff - находит различия между двумя файлами
Мы в соцсетях ✉