Home

Page 30
Page 30
background image

-E

игнорировать изменения, связанные с добав-

лением символа табуляции в тексте

-b

игнорировать изменения, связанные с добав-

лением пробелов

-w

игнорировать изменения, связанные с добав-

лением пробелов и табуляции

-B

игнорировать новые пустые строки

-p

 

(или 

show-c-

function

)

показать название функции языка C, в которой 

найдены изменения

-y

 (или —

side-by-side

)

отобразить результаты в две колонки

-r

просматривать каталоги рекурсивно

-X FILE

исключить из поиска файлы, имена которых со-

впадают с шаблонами в файле FILE

-d

 (или —

minimal

)

попытаться найти как можно меньше измене-

ний (то есть исключить ложные срабатывания)

СРАВНЕНИЕ ФАЙЛОВ 

В LINUX (КОМАНДА DIFF)

Для сравнения двух или нескольких файлов в Linux есть 

команда diff . Она может сравнивать как отдельные файлы, 

так и каталоги. Рассмотрим синтаксис, опции команды diff  

и несколько примеров её использования.

СИНТАКСИС КОМАНДЫ DIFF

Команда diff  имеет следующий синтаксис:

diff  [опции] файлы-или-директории

Мы указываем опции и подаем на вход два или более 

файлов или директорий, которые нам нужно сравнить.

ОПЦИИ КОМАНДЫ DIFF

Рассмотрим основные опции команды diff . Я рассмотрю 

только те опции, которые сам использую наиболее часто.

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

СРАВНЕНИЕ ДВУХ ТЕКСТОВЫХ ФАЙЛОВ

Для простого сравнения двух текстовых файлов с име-

нами myfi le1 и myfi le2 выполним в терминале команду:

diff myfi le1 myfi le2

Вывод команды diff  удобно перенаправить в файл с 

расширением diff . Большинство текстовых редакторов в 

Linux, например Gedit, распознают этот файл и подсвечи-
вают его синтаксис. Чтобы 

направить результат срав-

нения  в 

файл changes.diff  нужно использовать символ 

перенаправления потока (>):

diff myfi le1 myfi le2 > changes.diff

Сравнение директорий, содержащих текстовые файлы

Рассмотрим пример сравнения двух директорий 

(mydir1 и mydir2), которые содержат текстовые файлы. 

Основное отличие здесь от примера выше состоит в том, 

что мы добавим опцию -r, означающую рекурсивный обход 

файлов в директориях.

diff -r mydir1 mydir2 > changes.diff

Теперь предположим, что в директориях, в которых мы 

сравниваем файлы, находится много «мусора», который мы 

не должны сравнивать. Создадим файл excludeFiles и запи-

шем в него шаблоны и названия файлов, которые мы не 

должны сравнивать. Например, содержимое excludeFiles 

может иметь вид:

 

  *.o

 

  ChangeLog*

*.bak

*.exe

Теперь укажем команде diff , что-

бы она использовала наш файл 

excludeFiles при сравнении катало-

гов:

diff  -r  -X  excludeFiles 
mydir1 mydir2 > changes.diff

Таким образом, мы не сравниваем 

файлы, имена которых попадают под 

шаблоны в файле excludeFiles, напри-

мер, vasya.exe или ChangeLog12.

Добавим еще несколько опций, 

которые описаны выше, чтобы улуч-

шить результат сравнения:

diff  -rwBd  -X  excludeFiles 
mydir1 mydir2 > changes.diff

Мы сравниваем файлы в директо-

риях mydir1 и mydir2, игнорируя изменения, связанные с 

добавлением пустых строк, пробелов, табуляции, а также 

используем шаблоны имен файлов в excludeFiles, чтобы ис-
ключить из сравнения не

нужные файлы.

ЗАКЛЮЧЕНИЕ

 Дополнительную информацию по использованию ко-

манды diff  в вашей системе Linux вы можете получить, вы-

полнив команду:

man diff

Также существуют программы, которые позволяют 

сравнивать файлы, используя графический интерфейс. На-

пример, программа Meld, которая в наглядном виде пока-
зывает где и что изменилось 

в файлах.

www.pingvinus.ru

U

ser

  

A

nd

LINUX

Other

ualinux.com

30

U & L  

1 1 - 0 1


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.