Вперед Назад Содержание

1. Введение

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

Команда 'diff' служит для выяснения разницы между двумя файлами, или всеми соответствующими файлами в двух директориях. 'diff' выдает различия между двумя файлами строка за строкой в любом из нескольких форматов, которые можно установить с помощью опций командной строки. Это множество различий часто называется "diff" или "patch". Для одинаковых файлов 'diff' обычно ничего не выводит; для двоичных (не-текстовых) файлов, 'diff' обычно сообщает только, что они разные.

Команда 'cmp' служит для выяснения смещений и номеров строк, по которым два файла различаются. 'cmp' может также выявить все символы, которыми два файла отличаются друг от друга. Другой способ сравнить два файла посимвольно состоит в использовании команды редактора Emacs 'M-x compare-windows'

Команда 'diff3' служит для выяснения различий между тремя файлами. Когда два человека независимо внесли изменения в один и тот же файл, 'diff3' может сообщить о различиях между оригинальной и двумя измененными версиями, и позволяет создать единый файл, который содержит изменения, сделанные обоими людьми, одновременно с предупреждением о противоречиях между ними.

Команда 'sdiff' служит для интерактивного об'единения двух файлов.

Множество отличий, произведенное программой 'diff' позволяет распространять среди других людей изменения, внесенные в текстовые файлы (такие как исходные тексты программ). Этот метод особенно полезен когда объем изменений незначителен по сравнению с размером полных файлов. Результаты работы 'diff' могут быть использованы программой 'patch' для модифицирования или восстановления копии файла. Если представить 'diff' как вычитание одного файла из другого, для получения их разности, то 'patch' - это сложение разности с первым файлом для воспроизведения второго.

Это руководство сначала описывает как создавать diff-ы (множества отличий), а далее показывает как использовать их для воспроизведения исходных файлов.

GNU 'diff' был написан Майком Хаертелом, Давидом Хайесом, Ричардом Столлманом, Лен Тауер и Полом Эггерт. Вэйн Дэвидсон придумал унифицированный формат вывода. Базовый алгоритм описан в "Нулевой алгоритм поиска отличий и его варианты" Евгением В. Майрес, 'Algorithmica(Алгоритмика)' Ч.1 Nо.2, 1986, с.251-266; и в "Программе сравненения файлов" Веббом Миллером и Евгением В. Майерсом, 'Программное обеспечение - практика и опыт' Ч.15 No.11, 1985, с. 1025-1040. Алгоритм был независимо разработан Е.Укконеном и описан в статье "Алгоритмы для приближенного сравнения строк" в 'Информации и контроле' Ч.64, 1985, с.100-118.

GNU 'diff3' был написан Рэнди Смитом. GNU 'sdiff' был написан Томасом Лорд.

GNU 'cmp' был написан Торбжорном Гранлундом и Дэвидом МакКэнзи.

'patch' был написан в основном Ларри Уоллом; GNU рассширения были написаны в основном Уэйном Дэвидсоном и Дэвидом МакКензи.


Вперед Назад Содержание