GNU/Linux >> Znalost Linux >  >> Linux

Jak provádět řádkové porovnání souborů v Linuxu pomocí příkazu diff

Pokud jste uživatelem Linuxu a vaše práce zahrnuje práci na různých distribucích Linuxu, může se stát, že se přistihnete, že zadáváte příkazy na systému Linux bez grafického uživatelského rozhraní. To znamená, že již nebudete mít přístup ke svým oblíbeným aplikacím GUI – například Gedit pro úpravy souborů – které obvykle používáte pro svou běžnou práci.

Bez ohledu na to, zda jste správce systému nebo vývojář, je porovnávání souborů úkol, který je společný téměř každému. Co když potřebujete porovnat dva soubory při práci na systému Linux pouze s CLI? Váš oblíbený porovnávací nástroj založený na grafickém uživatelském rozhraní zde samozřejmě nebudete mít k dispozici. Netřeba dodávat, že si budete muset vystačit s nástrojem příkazového řádku, abyste svou práci dokončili.

V Linuxu lze příkaz diff použít k porovnání dvou souborů, ale jde o to, že s tímto nástrojem je spojena mírná křivka učení. Pokud nevíte, jak diff funguje, a hledáte rychlý návod, jak začít, nehledejte dál, protože v tomto článku probereme základy tohoto příkazu spolu s několika snadno pochopitelnými příklady.

Než budeme pokračovat, mějte na paměti, že všechny příklady v tomto tutoriálu byly testovány na Ubuntu 14.04 s Bash verze 4.3.11(1) a rozdíl verze 3.3.

 

Příkaz rozdílu v Linuxu

Namísto přímého skákání na příklady je dobré nejprve o příkazu něco vědět. Manuálová stránka příkazu diff ukazuje, že nástroj porovnává soubory řádek po řádku. Jeho syntaxe je:

rozdíl [OPTION]... SOUBORY

Zatímco [OPTION] představuje různé možnosti příkazového řádku, které nástroj nabízí, FILES je obvykle několik názvů souborů. Přestože manuálová stránka diff obsahuje užitečné informace o příkazu, úplná dokumentace pro diff je udržována jako Texinfo manuál. Pokud informace a rozdíl programy jsou na vašem webu správně nainstalovány, příkaz

informační rozdíl

by vám měl umožnit přístup ke kompletní příručce.

Rozdílné použití/Příklady

Nyní pojďme diskutovat o tom, jak se používá diff. Začněme základním příkladem. Předpokládejme, že následují dva soubory, které chceme porovnat:

soubor1:

test
test2
test3

soubor2:

test
test23
test3

Zde je návod, jak můžete použít příkaz diff k porovnání těchto dvou souborů:

diff soubor1 soubor2

A zde je výstup, který vytvoří výše uvedený příkaz:

2c2
---
> test23

Výstup vypadá záhadně, že? Za chvíli na to přijdeme. Pojďme nejprve pochopit základní strukturu výstupu, který diff obecně produkuje.

První věc, kterou je třeba mít na paměti, je, že výstup představuje změny potřebné k transformaci souboru1 (obvykle původního souboru) na soubor2 (nový nebo změněný soubor). Výstup se obvykle skládá z řádků, které začínají číslem (nebo rozsahem) následovaným abecedou (a, d nebo c) a dalším číslem (nebo rozsahem). Například 2c2 (z výše uvedeného výstupu).

První číslo představuje řádek (nebo rozsah řádků) ze souboru1 (původní soubor), zatímco poslední číslo představuje řádek (nebo rozsah řádků) ze souboru2 (nový soubor). Pokud jde o abecedu mezi tím, a představuje přidáno , d je pro smazáno, a c představuje změněno .

Takže 2c2 znamená, že se druhý řádek v původním souboru změnil a je třeba jej nahradit druhým řádkem z nového souboru, aby byly soubory stejné. Pokud ručně porovnáte dva soubory (soubor1 a soubor2), uvidíte, že je to přesně ten případ.

Pokud jde o tři řádky, které ve výše uvedeném příkladu následují za 2c2, ten, který začíná „<“, není nic jiného než druhý řádek ze souboru1, a ten, který začíná „>“, není nic jiného než dotyčný řádek ze souboru 2. Tři pomlčky mezi nimi (---) slouží pouze pro účely oddělení.

Je potřeba se teď vrátit k výstupu prvního příkladu? S největší pravděpodobností ne tak, jak by výše uvedené vysvětlení mělo být samovysvětlující. Nyní si vezměme další příklad.

Takže tady je soubor1:

Ahoj všichni,
toto je návod na příkazy diff
od HowtoForge.
Doufám, že z toho budete mít užitek.
Díky.

Zde je soubor2:

Ahoj všichni,
Vítejte v HowtoForge.
V tomto tutoriálu probereme nástroj rozdílů.
Doufám, že vám bude užitečný.
Díky.

Zde je příkaz (který zůstává stejný):

diff soubor1 soubor2

A tady je výstup:

2,4c2,4
---
> Vítejte v HowtoForge.
> V tomto tutoriálu probereme nástroj rozdílů.
> Doufám, že vám bude užitečný.

Takže můžete vidět, že v tomto případě je hlavní výstup - 2,4c2,4 - skládá se z více čísel před i za abecedou. V zásadě se jedná o rozsahy - 2,4 představuje číslo řádku 2,3 ​​a 4. Výstup tedy znamená, že čísla řádků 2 až 4 v původním souboru (soubor1) se změnila a je třeba je nahradit čísly řádků 2 až 4 z soubor2, aby byly soubory stejné.

Pokračujeme, pojďme trochu změnit obsah souborů. Zatímco soubor1 zůstane stejný, soubor2 se nyní změní na:

Vítejte v HowtoForge.
V tomto tutoriálu probereme nástroj rozdílů.
Doufám, že vám bude užitečný.
Díky.

Toto je návod na diff příkaz
od HowtoForge.
Doufám, že z toho budete mít prospěch.
Díky.

Nyní, když spustíte příkaz diff, bude vytvořen následující výstup:

0a1,5
> Vítejte v HowtoForge.
> V tomto tutoriálu probereme nástroj rozdílů.
> Doufám, že vám bude užitečný.
> Díky.
>

Můžete tedy vidět, že nástroj okamžitě rozpoznal, že druhý odstavec v souboru2 není nic jiného než to, co vše obsahuje soubor1. Takže výstup říká, že řádek 1 až 5 ze souboru2 by měl být připojen na začátek souboru1, aby byly oba soubory stejné.

A pokud smažete poslední řádek („Díky.“) ze souboru2, zde je výstup:

0a1,5
> Vítejte v HowtoForge.
> V tomto tutoriálu probereme nástroj rozdílů.
> Doufám, že vám bude užitečný.
> Díky.
>
4d8

Můžete vidět, že výstup nyní obsahuje také 4d8,  což znamená, že čtvrtý řádek v souboru 1 by měl být smazán, aby se oba soubory synchronizovaly od řádku číslo 8. Samozřejmě, že je to poté, co vyřešíte změnu 0a1,5, která je zmíněna jako první.

Závěr

Souhlasím, výstup příkazu diff není snadné pochopit, ale křivka učení není tak strmá. Strávte s nástrojem několik hodin a jistě se s ním budete cítit pohodlně. Co se týče tutoriálu, tady jsme jen poškrábali povrch. Podívejte se na manuálovou stránku příkazu a uvědomíte si, že se toho o rozdílu můžete dozvědět mnohem více, o čemž se budeme věnovat v další části této série výukových programů.


Linux
  1. Jak provést řádkové porovnání souborů v Linuxu pomocí příkazu diff - Část II

  2. Jak komprimovat a extrahovat soubory pomocí příkazu tar v systému Linux?

  3. Jak zabít proces v Linuxu pomocí příkazu?

  1. Jak bezpečně přenášet soubory pomocí příkazu SCP v systému Linux

  2. Jak vytvořit řídké soubory v Linuxu pomocí příkazu „dd“.

  3. Jak zobrazit skryté soubory pomocí příkazu Linux `find`

  1. Jak přejmenovat soubory v Linuxu

  2. Jak restartovat Linux pomocí příkazového řádku

  3. Jak třídit soubory v Linuxu pomocí příkazu Sort