Сравнение файлов в Linux для веб-разработчика
Опубликовано:
Комментариев: 0

В операционной системе Linux есть несколько программных решений для сравнения внутреннего содержимого двух файлов различными методами. Безусловно, такая функция будет безумно полезна веб-разработчику для сравнения двух текстовых файлов. К примеру, есть 2 файла стилей css, которые Вам нужно быстро сравнить чтобы найти в них отличия. Или посмотреть, что нового в обновленном PHP скрипте.
Я бы еще посоветовал дописать аргумент -t, для более читабельного формата diff отчёта (достигается путем выравнивания расстояний между таблицами пробелами). В противном случае в gedit стандартный отчет откроется отлично, а в Sublime он "расплывётся":
Наглядный пример из жизни:
Итак, в моём случае мне нужно сравнить 2 файла bootstrap.css. Летом сего года я что-то исправил в стилях файла bootstrap.css (чего делать нельзя было, т.к. для кастомных правок стилей нужно использовать отдельный style.css). Из-за этой мелочи мне проблематично обновиться с версии 3.3.2 до bootstrap 3.3.5, т.к. в более новой версии свой обнолённый CSS файл, при замене которого все мои правки пропадут и "слетит" часть дизайна веб-сайта. Учитывая, что в файле стилей bootstrap более 6000 строчек кода абсолютно невозможно самостоятельно просмотреть изменения.Сравниваем файлы с утилитой diff в linux:
Чтобы сравнить файлы `bootstrap.css' и `bootstrap-original.css' (для наглядности переименовал оригинальный файл, дописав к нему приставочку -original), введите в терминале:$ diff bootstrap.css bootstrap-original.css
В консоли мы получили стандартный отчет о различиях в этих файлах. Если нужно автоматически сохранить отчет в отдельный файл на диске - направляем вывод результатов diff в файл
$ diff bootstrap.css bootstrap-original.css > сss-modifications.diff
Теперь весь отчет о различиях файлов сохранится в этот же папке под именем "сss-modifications.diff".
Однако, такой вывод не слишком наглядно показывает где и что было добавлено или убрано мною.
Чтобы яснее увидеть чем отличаются два файла, можно использовать sdiff; Отличие этого пакета в том, что он не генерирует отчёт о различиях. Расположив оба файла в две колонки, он сразу же показывает отличия в обоих файлах.
`|' помечает строки, которые различаются между собой
`<' подсвечивает те строки кода, которые встречаются только в первом файла
`>' подсвечивает строки, которые встречаются только во втором файле.
Синтаксис команды аналогичен синтаксису diff:
$ sdiff bootstrap.css bootstrap-original.css
Выводим в консоль различия, а командой:
$ sdiff bootstrap.css bootstrap-original.css > сss-modifications.diff
Записываем весь отчёт в отдельном файле.

$ sdiff bootstrap.css bootstrap-original.css > сss-modifications.diff -t
P.S. на этом возможности сравнения файлов в Linux не заканчиваются и можно сравнить даже 3 файла одновременно. Для этого используйте команду
Для одновременного сравнения трех файлов используйте diff3.
$ diff3 bootstrap.css bootstrap-original.css bootstrap-3.css > new.diff