НАЗВА

diff - знайти відмінності між двома файлами

ЗВІД

diff [опції] файл-з файл-до

ОПИС

У найпростішому випадку, diff порівнює вміст двох файлів: файл-з та файл-до . Ім'я файлу - (дефіс) означає текст, прочитаний зі звичного вводу. У особливому разі, diff - - порівнює копію звичного вводу з ним же. Якщо файл-з є текою, а файл-до ні, diff бере для порівняння файл у теці файл-з з назвою файл-до , і навпаки. Файл, що не є текою не повинен бути - . Якщо і файл-з , і файл-до є теками, diff порівнює відповідні файли в обох теках, у алфавітному порядку; це порівняння не рекурсивне, поки не вказано опцію -r чи --recursive . diff ніколи не порівнює дійсний вміст теки, так ніби вона є файлом. Явно описаний файл не може бути звичним вводом, тому що звичний ввід безіменний, і поняття "файл з тим же ім'ям" не застосовне. Ключі diff починаються з - , тож звично назви файл-з та файл-до не можуть починатись з - . проте, арґумент -- вказує вважати решту арґументів назвами файлів, навіть якщо вони починаються з - .

Опції

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

**-** _кількість_рядків_ Показати _кількість_рядків_ (ціле число) рядків контексту. Ця опція сама не вказує формат виводу; Вона не діє без **-c** чи **-u** . Ця опція застаріла. Для вірної дії _patch_ звично потрібно хоча б два рядки контексту.
**-a** Вважати всі файли текстовими й обробляти їх рядок за рядком, навіть якщо вони не схожі на текстові.
**-b** Іґнорувати зміни в кількості пробілів.
**-B** Іґнорувати зміни, що лише вставляють чи додають пусті рядки.
**--brief** Повідомити лише чи відрізняються файли, а не подробиці відмінностей.
**-c** Вживати контекстний формат виводу.
**-C ** _кількість_рядків_
**--context[=** _кількість_рядків_ **]**
Вживати контекстний формат виводу, показуючи _кількість_рядків_ (ціле число) рядків контексту, або три, якщо _кількість_рядків_ не вказано. Для вірної дії, _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=** _кількість_рядків_ Не викидати останні _кількість_рядків_ рядків спільного префіксу і перші _кількість_рядків_ рядків спільного суфіксу.
**-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 ** _мітка_
**--label=** _мітка_
Вживати _мітку_ замість назви файлу у заголовках контекстного та та об'єднаного формату.
**--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** Показати, якій функції мови C належить кожна зміна.
**-P** При порівнянні тек, якщо файл існує лише у другій з двох тек, уважати, що він існує, але пустий у першій.
**--paginate** Пропустити вивід через _pr_ для розбиття на сторінки.
**-q** Лише повідомити чи файли різні, а не подробиці відмінностей.
**-r** При порівнянні тек, рекурсивно порівнювати будь-які виявлені підтеки.
**--rcs** Вивести відмінності у RCS-форматі; Подібне до **-f** , але кожна команда вказує кількість змінених рядків.
**--recursive** При порівнянні тек, рекурсивно порівнювати будь-які виявлені підтеки.
**--report-identical-files**
**-s**
Повідомити, коли два файли однакові.
**-S ** _файл_ При порівнянні тек, почати з файлу _файл_ . Це вживається для продовження перерваного порівняння.
**--from-file=** _файл_ Порівнювати _файл_ з усіма операндами. _файл_ може бути текою.
**--to-file=** _файл_ Порівняти всі операнди з _файлом_ . _ файл_ може бути текою.
**--sdiff-merge-assist** Вивід додаткової інформації, необхідної _sdiff_ . _sdiff_ вживає цю опцію, коли запускає _diff_ . Ця опція не призначена для прямого використання користувачем.
**--show-c-function** Показати, якій функції мови C належить кожна зміна.
**--show-function-line=** _реґулярний_вираз_ У контекстному та об'єднаному форматах, для кожного блоку відмінностей, показати останній попередній рядок, відповідний до арґументу _реґулярний_вираз_ .
**--side-by-side** Вживати формат виводу в два стовпці.
**--speed-large-files** Вживати евристику для прискорення обробки великих файлів з багатьма розсіяними малими відмінностями.
**--starting-file=** _file_ При порівнянні тек, почати з файлу _файл_ . Це вживається для продовження перерваного порівняння.
**--suppress-common-lines** Не виводити однакові рядки при двостовпцевому виводі.
**-t** Розгортати табуляцію у пробіли на виводі, для збереження вирівнювання відступів у вхідних файлах.
**-T** Виводити табуляцію замість пробілу перед текстом у рядку в нормальному та контекстному форматах. Таким чином, вирівнювання табуляцій у рядку виглядає нормально.
**--text** Вважати всі файли текстовими й обробляти їх рядок за рядком, навіть якщо вони не схожі на текстові.
**-u** Вживати об'єднаний формат виводу.
**--unchanged-group-format=** _формат_ Вживати _формат_ для виводу групи спільних рядків узятих з обох файлів у форматі if-then-else (якщо-то-інакше).
**--unchanged-line-format=** _формат_ Вживати _формат_ для виводу рядків спільних для обох файлів у форматі if-then-else (якщо-то-інакше).
**--unidirectional-new-file** При порівнянні тек, якщо файл існує лише у другій з двох тек, уважати, що він існує, але пустий у іншій.
**-U ** _кількість_рядків_
**--unified[=** _кількість_рядків_ **]**
Вживати об'єднаний формат виводу, показуючи дану _кількість_рядків_ рядків, або три, якщо _кількість_рядків_ не дано. Для нормальної роботи _patch _ звично треба хоча б два рядки контексту.
**-v**
**--version**
Вивести номер версії _diff_ .
**-w** Не враховувати пробіли при порівнянні рядків.
**-W ** _кількість_стовпців_
**--width=** _кількість_стовпців_
Встановити ширину виводу в _кількість_стовпців_ у двостовпцевому форматі.
**-x ** _зразок_ При порівнянні тек, пропускати файли та підтеки, основа назви яких відповідає _зразку_ .
**-X ** _файл_ При порівнянні тек, пропускати файли та підтеки, основа назви яких відповідає будь-якому зразку, що міститься в _файлі_ .
**-y** Вживати двостовпцевий формат виводу.

ДИВІТЬСЯ ТАКОЖ

cmp(1), comm(1), ?diff3(1), ed(1), patch(1), ?pr(1), ?sdiff(1).

ДІАГНОСТИКА

Стан завершення 0 означає відмінностей не знайдено, 1 означає знайдено деякі відмінності, 2 означає помилку.