Бывает появляется необходимость сравнить содержимое двух файлов (например, конфигураций), чтобы выявить внесенные изменения. В линукс это можно сделать многими способами. Но в этой статье мы рассмотрим утилиту diff.
Diff — это пакет из стандартного репозитория, который работает в консоли. Его использовать очень просто.
$ diff options file1 file2
Можно так же сравнивать более двух файлов.
$ diff options file1 file2 file3 file4
Опции у diff следующие:
-q — выводить только отличия файлов;
-s — выводить только совпадающие части;
-с — выводить нужное количество строк после совпадений;
-u — выводить только нужное количество строк после отличий;
-y — выводить в две колонки;
-e — вывод в формате ed скрипта;
-n — вывод в формате RCS;
-a — сравнивать файлы как текстовые, даже если они не текстовые;
-t — заменить табуляции на пробелы в выводе;
-l — разделить на страницы и добавить поддержку листинга (как у less);
-r — рекурсивное сравнение папок;
-i — игнорировать регистр;
-E — игнорировать изменения в табуляциях;
-Z — не учитывать пробелы в конце строки;
-b — не учитывать пробелы;
-B — не учитывать пустые строки.
В выводе сравнения файлов указываются символы, которые обозначают следующее:
a — добавлено
d — удалено
c — изменено
> — строка совпадает
< - строка отличается
Рассмотрим пример. У нас есть два файла. Посмотрим их содержимое:
$ cat file1
1
2
3
a
b
c
$ cat file2
1
a
2
a
3
c
Как видим, они отличаются. Попробуем их сравнить.
$ diff file1 file2
1a2
> a
3d3
< 3
5c5
< b
---
> 3
Но мне нравится больше в две колонки:
$ diff -y file1 file2
1 1
> a
2 2
3 <
a a
b | 3
c c
Как видно, diff - это очень удобный инструмент для сравнения двух и более файлов.
