Как в Linux сравнить 2 файла так чтоб были видны различия


Мне в Ред ОС понравилось сравнивать 2 файла используя vimdiff


Для сравнения двух файлов в консоли Linux и отображения их различий можно использовать несколько команд. Одними из самых популярных инструментов для этого являются команды diff и cmp.

Использование команды diff

Команда diff сравнивает два файла построчно и показывает различия между ними.

Вот синтаксис использования diff:

diff file1 file2

Пример использования:

diff file1.txt file2.txt

Основные опции команды diff

  • -u: вывод различий в формате объединения (unified format), который более читаем.
  • -c: вывод различий в контекстном формате.
  • --side-by-side: вывод различий в виде двух колонок для сравнения строк.

Пример с использованием -u:

diff -u file1.txt file2.txt

Использование команды cmp

Команда cmp сравнивает два файла побайтово и сообщает, на каком байте находятся первые различия.

Пример использования:

cmp file1.txt file2.txt

Визуализация различий с помощью команды vimdiff

Если установлен текстовый редактор Vim, можно использовать vimdiff для наглядного отображения различий в графическом режиме:

vimdiff file1.txt file2.txt

Для выхода: Esc : qa! Enter


Пример вывода команды diff

Для примера предположим, что есть два файла file1.txt и file2.txt со следующим содержимым:

file1.txt:

Hello, World!
This is a test file.
Goodbye!

file2.txt:

Hello, World!
This is a modified file.
Goodbye!

Команда diff file1.txt file2.txt выдаст:

2c2
< This is a test file.
---
> This is a modified file.

Команда diff -u file1.txt file2.txt выдаст:

--- file1.txt  2024-07-04 12:34:56.000000000 +0000
+++ file2.txt  2024-07-04 12:35:10.000000000 +0000
@@ -1,3 +1,3 @@
 Hello, World!
-This is a test file.
+This is a modified file.
 Goodbye!

Использование этих команд позволит вам эффективно сравнивать файлы и выявлять различия в консоли Linux.

А можно так чтоб в 2-ва столбика и построчно?

Да, вы можете сравнить два файла и вывести различия в виде двух столбиков с помощью команды diff с опцией --side-by-side. Это позволяет наглядно видеть, какие строки различаются между двумя файлами. Вот как это сделать:

diff --side-by-side file1.txt file2.txt

Эта команда выведет строки из обоих файлов рядом друг с другом. Строки, которые отличаются, будут отмечены символами. Например, | указывает на различие между строками, < означает, что строка существует только в первом файле, а > – что строка существует только во втором файле.

Пример использования:

diff --side-by-side file1.txt file2.txt

Результат выполнения команды будет выглядеть следующим образом:

Hello, World!                            Hello, World!
This is a test file.                  |   This is a modified file.
Goodbye!                                 Goodbye!

Чтобы вывод был более удобен для чтения, можно добавить опцию --width=N, где N – ширина экрана в символах. Например:

diff --side-by-side --width=80 file1.txt file2.txt

Таким образом, вы сможете удобно сравнивать два файла построчно в виде двух столбиков.

А чтоб и в 2 столбика и с выделением различий?

Для сравнения двух файлов с отображением в двух столбиках и выделением различий можно использовать команду diff с опциями --side-by-side и --suppress-common-lines. Это позволит увидеть различия более наглядно.

Вот пример команды:

diff --side-by-side --suppress-common-lines file1.txt file2.txt

Эта команда покажет только строки, которые отличаются, в двух столбиках. Строки, которые совпадают, не будут отображены.

Если вам нужно выделение различий, то в терминале можно использовать команду colordiff, которая является цветной версией diff. Установите colordiff, если он не установлен:

sudo apt-get install colordiff  # для систем на основе Debian/Ubuntu

И используйте его с той же опцией --side-by-side:

colordiff --side-by-side file1.txt file2.txt

Результат выполнения команды будет выглядеть следующим образом, с выделенными цветом различиями:

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