Diff — это инструмент командной строки для систем Unix, который позволяет сравнивать два файла или каталога и видеть различия между ними. Он идеально подходит для сравнения старых и новых версий файлов, чтобы увидеть, что изменилось. В этой статье мы покажем вам, как можно использовать diff
для удобного сравнения файлов в Linux.
Совет : научитесь копировать и вставлять текст, файлы и папки в терминале Linux .
Сравнение файлов с помощью diff
- Откройте окно терминала.
- Введите
diff
и укажите пути к двум файлам, которые вы хотите сравнить. В данном случае я сравниваю две небольшие программы на языке C на своем рабочем столе, используя следующую команду:
diff ~/DeskContents
Сравнение файлов с помощью diff
Desktop/hello-1.c
- Нажмите Enter, чтобы отправить команду. В результате дисплей покажет вам все различные строки между файлами. Номера сравниваемых строк будут отображаться как «1c1», что означает, что первая строка была изменена и были обнаружены следующие различия.
- Чтобы просмотреть файлы рядом и их различия, используйте флаг
-y
послеdiff
. Например:
diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c
Любая строка с символом вертикальной черты ( |
) является строкой с разницей. Только обязательно сначала разверните окно терминала, иначе вам может быть трудно увидеть изображение.
Полезно знать: к использование каналов Bash вместе с мощной утилитой sed узнайте, как управлять выводом программы.
Сравнение файлов с помощью Meld
Доступ к функциям diff
также можно получить через Слияние , графический интерфейс для diff
. Учитывая, что с пользовательским интерфейсом diff может быть сложно разобраться, Meld — полезный инструмент.
- Установите Meld из командной строки, открыв терминал и набрав:
sudo apt -y install meld
или
sudo dnf -y install meld
для дистрибутивов на базе RPM.
При этом будет инициализирован менеджер пакетов apt и начнется установка Meld. Обратите внимание, что флаг -y
автоматически отвечает «да» на любые запросы; пожалуйста, удалите его, если вы предпочитаете подтверждать эти запросы вручную.
- Введите пароль администратора при появлении соответствующего запроса. Когда вы снова увидите командную строку, установка завершена и Meld можно открыть.
- Когда вы откроете Meld, вы увидите три варианта: сравнение файлов, сравнение ката
Сравнение файлов с помощью Meld
е «Файл».
- Появятся два раскрывающихся меню, в обоих написано «(Нет)». Нажмите на один из них, чтобы выбрать файл для сравнения.
- Нажмите на другое раскрывающееся меню, чтобы выбрать второй файл для сравнения.
- Нажмите кнопку «Сравнить».
- В следующем окне суммируются все различия, обнаруженные между двумя файлами. Красные символы обозначают различия, а синий фон указывает на наличие различий в этой строке. Зеленый фон указывает на то, что строка существует в одном файле, но отсутствует в другом.
- Чтобы перемещаться между различиями, нажимайте кнопки вверх и вниз в строке меню. Вы также можете щелкнуть мышью прямо в документе.
Полезно знать. Если вы предпочитаете использовать онлайн-инструменты для сравнения файлов, вот некоторые из лучшие онлайн-инструменты для проверки различий .
Управление файлами в Meld
Помимо сравнения, Meld позволяет изменять сравниваемые файлы. Meld продолжит анализировать документ на наличие изменений при изменении любой версии, и вы можете в любой момент нажать Ctrl+ Z, чтобы отменить изменения.
- Чтобы скопировать изменения из одного файла в другой, щелкните маленькие черные стрелки между изменениями. Например, если щелкнуть стрелку слева, будет использоваться левая линия документа, чтобы перезаписать документ справа.
- Строки также можно вставлять в документы без перезаписи. Если вы удержите нажатой клавишу Ctrl, вы увидите, что стрелки последнего шага превратятся в знаки плюса. Щелкните значок, чтобы открыть небольшое диалоговое окно, в котором можно выбрать место вставки новой строки.
- Наконец, введите текст прямо в документ. Просто вставьте курсор, как обычно, и начните печатать.
- Завершив внесение изменений, нажмите кнопку «Сохранить», чтобы сохранить файлы.
Создание файлов различий с использованием Meld и diff
Помимо демонстрации различий между двумя файлами, вы также можете использовать Meld для создания «файлов различий». Это небольшие фрагменты текста, содержащие инструкции о том, как применить изменения из одной версии файла в другую. Это полезно, если вы хотите быстро распространять обновления кода, не передавая весь исходный архив.
- Откройте два файла, которые хотите сравнить.
- Нажмите меню «Параметры» в правом верхнем углу окна.
- Выберите подменю «Сравнение».
- Нажмите кнопку «Форматировать как исправление».
- Откроется небольшое окно, в котором Meld распечатает весь
Управление файлами в Meld
файлами. На этом этапе вы можете либо скопировать этот текст в буфер обмена, либо сохранить его в файл. Чтобы сделать последнее, нажмите кнопку «Сохранить патч».
Хотя создавать файлы различий внутри Meld просто и понятно, бывают случаи, когда доступ к графическому интерфейсу при редактировании кода может оказаться невозможным. Для этого вы также можете использовать программу diff
для создания файла различий.
- Откройте терминал и проверьте, есть ли различия между двумя файлами:
diff hello.c hello-1.c
- Создайте простой файл различий, используя флаг
-c
:
diff -c hello.c hello-1.c > hello.diff
- При желании можно использовать параметр
-u
, который объединяет два потока текста в один единый блок различий. Это может быть полезно, если вы меняете много кода и хотите сэкономить место на диске:
diff -u hello.c hello-1.c > hello.diff
Использование файлов различий для исправления исходного кода
Как обсуждалось выше, файл различий позволяет создать легко доступную сводку изменений в исходном коде. Однако сам diff не может применить их к существующим файлам. Для этого используйте сопутствующую программу diff patch
.
- Определите исходный исходный код, который пытается изменить файл различий:
cat hello.diff | sed 1q
- Создайте резервную копию исходного исходного кода:
cp hello.c hello.c.old
- Запустите программу исправления с исходным файлом в качестве первого аргумента и файлом различий во втором:
patch hello.c hello.diff
Важно отметить, что файл различий также может содержать изменения, охватывающие несколько файлов. Примените это, поместив все файлы, необходимые для обновления, в один каталог и запустив patch < multi-file.diff
.
- Проверьте, успешно ли программа исправлений обновила исходный файл, сравнив его с резервной копией:
diff -y hello.c hello.c.old
К вашему сведению: Git — мощная кроссплатформенная программа контроля версий. Узнайте, как использовать его до управлять репозиториями исходного кода в Linux .
Часто задаваемые вопросы
Можно ли исправлять файл несколько раз?
Да. Однако важно отметить, что значение номера строки внутри файла различий является статическим. Например, применение разницы, которая добавляет пять строк кода в строке 1, изменит весь файл на пять строк. Хотя современные инструменты могут компенсировать изменения, вызванные отдельными различиями, применение нескольких различий может привести к ненужным конфликтам кода.
Похож ли файл различий на патч Git?
Да. И diff, и Git используют одинаковый формат для своих исправлений кода. В результате вы можете менять местами эти две утилиты при применении обновлений к исходному коду. Например, запуск git apply hello.diff
эквивалентен запуску patch < hello.diff
.
Можете ли вы использовать Meld с программой контроля версий, такой как Git?
Да. Одной из самых мощных особенностей Meld является то, что он может прозрачно работать с любой программой контроля версий. Это дает вам возможность легко взаимодействовать с вашими репозиториями вне интерфейса терминала.
Для этого нажмите Ctrl+ N, затем нажмите кнопку «Просмотр контроля версий». Затем щелкните раскрывающийся список под ним и выберите «Другое». Откроется небольшое окно, в котором вы сможете просмотреть и загрузить свой репозиторий Git.
Изображение предоставлено: Unsplash . Все скриншоты сделаны Рамсесом Редом.