Перейти до вмісту

Diff

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 17:09, 1 серпня 2011, створена ZéroBot (обговорення | внесок) (r2.7.1) (робот додав: zh:Diff)

diff - команда UNIX, використовується для показа списку різниць між двома файлами, рядок за рядком в будь-якому з декількох форматів, зазначених в параметрах командного рядка. Цей список виводиться в термінах строк, тобто, показуючи які строки потрібно вставити, видалити або замінити, щоб перетворити перший файл на другий. Для однакових файлів diff не виводить нічого. Для бінарних файлів diff повідомляє тільки про факт різниці, або нічого, якщо файли однакові.

Стандартний формат виводу інформації

Нормаьний формат виводу команди виглядає так:

Команда зміни файлу
\< from-file-line
\< from-file-line ...
---
\> to-file-line
\> to-file-line ...

Всього є три типи команд зміни файлу. Кожна складається з номеру рядка, або з діапазона рядків, розділених зап'ятою першого файлу, однієї літери (a,c,d) для ідентифікації команди зміни, та номеру рядка, або діапазона рядків, розділених зап'ятою з другого файлу. Кожен номер рядка, є номером рядка файла, з якого він був узятий. Типи команд це:

'lar' - Додати рядки в діапазоні r другого файла після номера рядка l першого файла. Як приклад, "4a11,17" означає, додати рядки 11-17 з другого файла після 4 рядка першого файла; або, якщо приводити файл 2 до файлу 1, тоді видалити з файла 2 рядки 11-17.

'fct' - Замінити рядки в діапазоні f першого файла, рядками з діапазону t другого файла. Як приклад, "3,6c9,12" означає, замінити рядки 3-6 першого файла рядками 9-12 з другого файла; або, якщо приводити файл 2 до файлу 1, тоді замінити рядки 9-12 другого файла рядками 3-6 з першого файла.

'rdl' - Видалити рядки з діапазону r для першого файла. l вказує на місце вставки рядків r з першого файла в другий для оберненої логіки. Як приклад, "4,6d2" означає видалити рядки 4-6 з першого файлу; або, якщо приводити файл 2 до файлу 1, вставити рядки 4-6 першого файла в другий після рядка 2.

Приклади застосування

  • Стандартне порівняння двох файлів
diff file1 file2
  • Отримання команд для ed редактора
diff -e file1 file2
  • Ігнорування верхнього і нижнього регістру символів
diff -i file1 file2
  • Ігнорування пустих місць (пробілів, табуляцій, пустих строк ...)
diff -w file1 file2
  • Вивід тільки факту різниці файлів
diff -q file1 file2
  • Рекурсивне порівняння файлів в знайденних піддиректоріях
diff -r dir1 dir2