НАЗВА
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 означає помилку.