У світі Linux керування та порівняння файлів є звичайним завданням для системних адміністраторів і розробників. Здатність порівнювати файли рядок за рядком має вирішальне значення для виявлення відмінностей, налагодження коду та забезпечення цілісності даних. Одним з потужних інструментів, який полегшує цей процес, єdiff>команда. У цій статті ми розглянемо, як використовуватиdiff>команда для порівняння файлів рядок за рядком у Linux.
Зміст
- Базовий синтаксис команди diff
- Параметри, доступні в команді diff
- Практична реалізація статті «Як порівнювати файли рядок за рядком у Linux?» :
- Порівняння двох файлів
- Видалення рядка у файлах за допомогою команди diff
- Перегляд відмінностей у контекстному режимі
- Перегляд відмінностей в єдиному режимі
- Порівняння файлів без урахування регістру
- Відображення версії відмінностей
Розуміння команди diff
diff означає різниця .Thediff>command — це універсальна утиліта, яка попередньо встановлена на більшості дистрибутивів Linux. Його основна мета — порівняти вміст двох файлів і відобразити відмінності між ними. Ця команда забезпечує комплексний спосіб виділити зміни, додавання та видалення в зрозумілому та читабельному форматі.
Ця команда використовується для відображення відмінностей у файлах шляхом порівняння файлів рядок за рядком. На відміну від своїх колег, cmp і зв'язок , він повідомляє нам, які рядки в одному файлі потрібно змінити, щоб зробити два файли ідентичними.
Важливо пам’ятати, що диф використовує певні спеціальні символи і інструкції які потрібні, щоб зробити два файли ідентичними. Він розповідає вам про те, як змінити перший файл, щоб він відповідав другому файлу.
Базовий синтаксис команди diff
Основний синтаксисdiff>команда така:
diff [OPTION]... FILE1 FILE2>
Тут, ` FILE1`> і ` FILE2`> це два файли, які ви хочете порівняти.
` OPTION`> прапор дозволяє налаштувати поведінку ` diff`> команда.
Параметри, доступні в команді diff
| Варіант | опис |
|---|---|
|
| Виведення відмінностей у контекстному режимі |
|
| Вихідні відмінності в уніфікованому режимі (більш стисло) |
|
| Виконайте порівняння без урахування регістру |
| –ignore-all-space | Ігноруйте пробіли під час порівняння рядків |
| – коротко Актриса Рубіна Ділайк | Виводити лише те, чи відрізняються файли, без деталей |
| – рекурсивний | Рекурсивне порівняння каталогів |
|
| Відобразіть результат у форматі поруч |
Практична реалізація статті «Як порівнювати файли рядок за рядком у Linux?» :
Порівняння двох файлів
Порівнюйте файли рядок за рядком у Linux.
Припустимо, у нас є два файли з іменами a.txt і b.txt містить 5 індійських штатів.
cat a.txt cat b.txt>

відображення вмісту файлів за допомогою команди cat
Тепер, застосовуючи команду diff без будь-яких опцій, ми отримуємо наступний результат:
diff a.txt b.txt>

порівняння файлів рядок за рядком у Linux
Давайте подивимося, що означає цей вихід. Перший рядок диф вихід міститиме:
- Номери рядків, що відповідають першому файлу,
- Спеціальний символ і
- Номери рядків, що відповідають другому файлу.
Як і в нашому випадку, 0a1 що означає після рядки 0 (на самому початку файлу), які ви повинні додати Таміл Наду щоб відповідати другому рядку файлу під номером 1. Потім він повідомляє нам, що це за рядки в кожному файлі, перед яким стоїть символ:
- Рядки, яким передує a < це рядки з першого файлу.
- Рядки, яким передує > це рядки з другого файлу.
- Наступний рядок містить 2,3c3 це означає, що з рядка 2 на рядок 3 у першому файлі потрібно змінити, щоб відповідати рядку номер 3 у другому файлі. Потім він повідомляє нам ці рядки з наведеними вище символами.
- Три риски (—) просто розділіть рядки файлу 1 і файлу 2.
Щоб зробити обидва файли ідентичними, спочатку додайте Таміл Наду у першому файлі на самому початку, щоб відповідати рядку 1 другого файлу, після цього змініть рядки 2 і 3 першого файлу, тобто. Уттар-Прадеш і Колката з рядком 3 другого файлу, тобто. Андхра-Прадеш . Після цього змініть рядок 5 першого файлу, тобто Джамму і Кашмір з рядком 5 другого файлу, тобто. Уттар-Прадеш .
Видалення рядка у файлах за допомогою команди diff
Розглянемо сценарій, деdiff>вказує на необхідність видалення рядка. Дано два файли,a.txt>іb.txt>:

відображення вмісту файлів за допомогою команди cat
diff a.txt b.txt>

Видалення рядка у файлі
Тут вище вихід 3d2 означає видалити 3-й рядок першого файлу, тобто Телангана так що обидва файли синхронізувати у рядку 2.
Перегляд відмінностей у контекстному режимі
Щоб переглянути відмінності в контекстному режимі, використовуйте -c варіант. Давайте спробуємо зрозуміти це на прикладі, у нас є два файли file1.txt і file2.txt :

відображення вмісту файлів за допомогою команди cat
diff -c file1.txt file2.txt>

Перегляд різниці в контекстному режимі
У вихідних даних вище:
- Перший файл позначається символом `
***`>, а другий файл позначається `---`>. - Рядок із `
***************`>служить роздільником. - Перші два рядки надають інформацію про файл 1 і файл 2, відображаючи назву файлу, дату зміни та час зміни.
- Після цього три зірочки `
***`>за ними йде діапазон рядків з першого файлу (рядки з 1 по 4). Чотири зірочки`****`>наступний Потім вміст першого файлу відображається з певними індикаторами:- Якщо рядок не змінюється, перед ним ставляться два пропуски.
- Якщо рядок потрібно змінити, перед ним ставиться символ і пробіл. Символи вказують на:
-
`+`>: Рядок у другому файлі буде додано до першого файлу для ідентичних результатів. -
`-`>: Рядок у першому файлі, який потрібно видалити для ідентичних результатів.
-
- Три тире`
---`>після них іде діапазон рядків з другого файлу (рядки з 1 по 4), розділених комою. Чотири тире `----`>далі, і буде показано вміст другого файлу.
Перегляд відмінностей в єдиному режимі
Щоб переглянути відмінності в уніфікованому режимі, використовуйте -в варіант. Він схожий на контекстний режим, але він не відображає жодної зайвої інформації або відображає інформацію в стислій формі.

відображення вмісту файлів за допомогою команди cat
diff -u file1.txt file2.txt>

Різниця перегляду в уніфікованому режимі
У вихідних даних вище:
- Перший файл позначається символом `
---`>, а другий файл позначено `+++`>. - Перші два рядки надають інформацію про файл 1 і файл 2, включаючи дату й час зміни.
- Після цього `
@@ -1>`,`>4 +1`>,`>4 @@`>позначає діапазон рядків для обох файлів. У цьому випадку він представляє рядки з 1 по 4 в обох файлах. - Наступні рядки представляють вміст файлів із певними індикаторами:
- Незмінені рядки відображаються без префікса.
- Рядки в першому файлі, який буде видалено, мають префікс
->. - Рядки у другому файлі, який потрібно додати, мають префікс
+>.
У цьому прикладі вихідні дані вказують на те, що, щоб зробити обидва файли ідентичними, рядки, що містять mv і comm, потрібно видалити з першого файлу (file1.txt>), і до нього потрібно додати рядки, що містять diff і comm.
Порівняння файлів без урахування регістру
За замовчуванням ` diff`> чутливий до регістру. Щоб виконати порівняння без урахування регістру, використовуйте ` -i`> варіант:

відображення вмісту файлів за допомогою команди cat
Thediff>потім використовується команда для порівняння цих файлів із-i>параметр, що робить порівняння нечутливим до регістру.
diff -i file1.txt file2.txt>

Порівняння без урахування регістру
2d1>: Це вказує на зміну рядка 2 першого файлу (file1.txt>). Thed>означає видалення, і вказує видалити рядок 2 із першого файлу.>: цей рядок означає вміст рядка, який потрібно видалити. В даному випадку це mv.
3a3>: Це вказує на додавання в рядку 3 першого файлу (file1.txt>). Thea>означає додати, і в ньому написано додати рядок у позиції 3.>різниця>: цей рядок представляє вміст, який потрібно додати. У цьому випадку це диф.
Підсумовуючи, результат говорить нам, що для того, щоб обидва файли були ідентичними (ігноруючи регістр), нам потрібно видалити рядок, що містить mv, із першого файлу (file1.txt>) і додайте рядок diff у ту саму позицію. Thediff>команда, з-i>опція дозволяє проводити порівняння без урахування регістру, змушуючи вважати mv і MV однаковими під час аналізу.
Відображенняdiff>Версія
Щоб перевірити версію ` diff`> встановлений у вашій системі, використовуйте ` --version`> варіант:
diff --version>

Відображення версії команди diff
Ця команда надає інформацію про версію, ліцензію та авторів ` diff`> корисність.
Часті запитання щодо команди diff – поширені запитання
Як я можу використовуватиdiff>команду для порівняння двох файлів рядок за рядком у Linux?
Щоб порівняти два файли рядок за рядком за допомогою
diff>просто використовуйте такий синтаксис:diff file1.txt file2.txt>Ця команда відобразить відмінності між двома файлами, виділяючи додавання, видалення та зміни.
Чи можу я ігнорувати відмінності пробілів під час порівняння файлів ізdiff>команда?
Так,
diff>Команда забезпечує-w>або--ignore-all-space>можливість ігнорувати відмінності пробілів. Наприклад:diff -w file1.txt file2.txt>Це особливо корисно під час порівняння файлів коду, де зміни у відступах або інтервалах незначні.
Як я можу створити файл виправлення за допомогоюdiff>команда?
Щоб створити файл виправлення, що представляє відмінності між двома файлами, використовуйте
-u>і перенаправте вихід у файл:diff -u file1.txt file2.txt>mypatch.patch>Згенерований файл виправлення можна застосувати пізніше для синхронізації іншого файлу зі змінами.
У чому полягає уніфікований форматdiff>вихід, і чим він відрізняється від формату контексту?
Уніфікований формат (`
-u`>варіант) у `diff`>вихід забезпечує більш стисле та зрозуміле представлення відмінностей порівняно з контекстним форматом (`-c`>варіант). Він відображає зміни в більш компактній формі, що полегшує розуміння змін між файлами.
Як мені рекурсивно порівняти два каталоги в Linux за допомогоюdiff>команда?
Щоб рекурсивно порівняти два каталоги та їхній вміст, використовуйте `
-r`>або `--recursive`>варіант зdiff>команда:diff -r directory1/ directory2/>Ця команда порівнює всі файли у вказаних каталогах і надає детальну інформацію про відмінності.
Висновок
У світі Linux порівняння файлів є звичайним завданням для системних адміністраторів і розробників. ` diff> command — це зручний інструмент, який допомагає в цьому процесі. У цій статті описано, як використовувати ` diff`> для порівняння файлів рядок за рядком у Linux. Він охоплює базовий синтаксис, важливі параметри, такі як контекстний режим і уніфікований режим, а також практичні програми, такі як створення файлів латок і рекурсивне порівняння каталогів. Якщо ви налагоджуєте код чи забезпечуєте цілісність файлу, розуміння та опанування ` diff`> Команда необхідна для ефективного керування файлами в Linux.