Иногда возникает необходимость сравнить несколько файлов между собой. Это может понадобиться при анализе разницы между несколькими версиями конфигурационного файла или просто для сравнения различных файлов. В Linux для этого есть несколько утилит, как для работы через терминал, так и в графическом интерфейсе.
В этой статье мы рассмотрим как выполняется сравнение файлов Linux. Разберем самые полезные способы, как для терминала, так и в графическом режиме. Сначала рассмотрим как выполнять сравнение файла linux с помощью утилиты diff.
-
Сравнение файлов diff
Утилита diff linux — это программа, которая работает в консольном режиме. Ее синтаксис очень прост. Вызовите утилиту, передайте нужные файлы, а также задайте опции, если это необходимо:
$ diff опции файл1 файл2
Можно передать больше двух файлов, если это нужно. Перед тем как перейти к примерам, давайте рассмотрим опции утилиты:
- -q — выводить только отличия файлов;
- -s — выводить только совпадающие части;
- -с — выводить нужное количество строк после совпадений;
- -u — выводить только нужное количество строк после отличий;
- -y — выводить в две колонки;
- -e — вывод в формате ed скрипта;
- -n — вывод в формате RCS;
- -a — сравнивать файлы как текстовые, даже если они не текстовые;
- -t — заменить табуляции на пробелы в выводе;
- -l — разделить на страницы и добавить поддержку листания;
- -r — рекурсивное сравнение папок;
- -i — игнорировать регистр;
- -E — игнорировать изменения в табуляциях;
- -Z — не учитывать пробелы в конце строки;
- -b — не учитывать пробелы;
- -B — не учитывать пустые строки.
Это были основные опции утилиты, теперь давайте рассмотрим как сравнить файлы Linux. В выводе утилиты кроме, непосредственно, отображения изменений, выводит строку в которой указывается в какой строчке и что было сделано. Для этого используются такие символы:
- a — добавлена;
- d — удалена;
- c — изменена.
К тому же, линии, которые отличаются, будут обозначаться символом <, а те, которые совпадают — символом >.
Вот содержимое наших тестовых файлов:
Теперь давайте выполним сравнение файлов diff:
$ diff file1 file2В результате мы получим строчку: 2,3c2,4. Она означает, что строки 2 и 3 были изменены. Вы можете использовать опции для игнорирования регистра:
$ diff -i file1 file2Можно сделать вывод в две колонки:
$ diff -y file1 file2А с помощью опции -u вы можете создать патч, который потом может быть наложен на такой же файл другим пользователем:
$ diff -u file1 file2Чтобы обработать несколько файлов в папке удобно использовать опцию -r:
$ diff -r ~/tmp1 ~/tmp2Для удобства, вы можете перенаправить вывод утилиты сразу в файл:
$ diff -u file1 file2 > file.patchКак видите, все очень просто. Но не очень удобно. Более приятно использовать графические инструменты.
Сравнение файлов Linux с помощью GUI
Существует несколько отличных инструментов для сравнения файлов в linux в графическом интерфейсе. Вы без труда разберетесь как их использовать. Давайте рассмотрим несколько из них:
1. Kompare
Kompare — это графическая утилита для работы с diff, которая позволяет находить отличия в файлах, а также объединять их. Написана на Qt и рассчитана в первую очередь на KDE. Вот ее основные особенности:
- Поддержка нескольких форматов diff;
- Поддержка сравнение файла linux и каталогов;
- Поддержка просмотра файлов diff;
- Настраиваемый интерфейс;
- Создание и применение патчей к файлам.
2. DiffMerge
DiffMerge — это кроссплатформенная программ для сравнения и объединения файлов. Позволяет сравнивать два или три файла. Поддерживается редактирование строк на лету.
Особенности:
- Поддержка сравнения каталогов;
- Интеграция с просмотрщиком файлов;
- Настраиваемая.
3. Meld
Это легкий инструмент для сравнения и объединения файлов. Он позволяет сравнивать файлы, каталоги, а также выполнять функции системы контроля версий. Программа создана для разработчиков и имеет такие особенности:
- Сравнение двух и трех файлов;
- Использование пользовательских типов и слов;
- Режим автоматического слияния и действия с боками текста;
- Поддержка Git, Mercurial, Subversion, Bazar и многое другое.
4. Diffuse
Diffuse — еще один популярный и достаточно простой инструмент для сравнения и слияния файлов. Он написан на Python. Поддерживается две основные возможности — сравнение файлов и управление версиями. Вы можете редактировать файлы прямо во время просмотра. Основные функции:
- Подсветка синтаксиса;
- Сочетания клавиш для удобной навигации;
- Поддержка неограниченного числа отмен;
- Поддержка Unicode;
- Поддержка Git, CVS, Darcs, Mercurial, RCS, Subversion, SVK и Monotone.
5. XXdiff
XXdiff — это свободный и очень мощный инструмент для сравнения и слияния файлов. Но у программы есть несколько минусов. Это отсутствие поддержки Unicode и редактирования файлов.
Особенности:
- Поверхностное или рекурсивное сравнение одного или двух файлов и каталогов;
- Подсветка отличий;
- Интерактивное объединение;
- Поддержка внешних инструментов сравнения, такие как GNU Diff, SIG Diff, Cleareddiff и многое другое;
- Расширяемость с помощью сценариев;
- Настраиваемость.
6. KDiff3
KDiff3 — еще один отличный, свободный инструмент для сравнения файлов в окружении рабочего стола KDE. Он входит в набор программ KDevelop и работает на всех платформах, включая Windows и MacOS. Можно выполнить сравнение двух файлов linux для двух или трех, или даже сравнить каталоги. Вот основные особенности:
- Отображение различий построчно и посимвольно;
- Поддержка автослияния;
- Обработка конфликтов при слиянии;
- Поддержка Unicode;
- Отображение отличий;
- Поддержка ручного выравнивания.