logo

Jak porovnávat soubory řádek po řádku v Linuxu | příkaz diff

Ve světě Linuxu je správa a porovnávání souborů běžným úkolem systémových administrátorů i vývojářů. Schopnost porovnávat soubory řádek po řádku je zásadní pro identifikaci rozdílů, ladění kódu a zajištění integrity dat. Jedním mocným nástrojem, který tento proces usnadňuje, jediff>příkaz. V tomto článku prozkoumáme, jak používatdiff>příkaz pro porovnání souborů řádek po řádku v Linuxu.

Obsah



Pochopení příkazu diff

diff znamená rozdíl .diff>command je všestranný nástroj, který je předinstalován ve většině distribucí Linuxu. Jeho primárním účelem je porovnat obsah dvou souborů a zobrazit rozdíly mezi nimi. Příkaz poskytuje komplexní způsob, jak zvýraznit změny, doplnění a odstranění v jasném a čitelném formátu.

Tento příkaz se používá k zobrazení rozdílů v souborech porovnáním souborů řádek po řádku. Na rozdíl od svých kolegů cmp a komunikace , říká nám, které řádky v jednom souboru mají být změněny, aby byly dva soubory identické.

Důležité je zapamatovat si to dif používá určité speciální symboly a instrukce které jsou nutné k tomu, aby byly dva soubory identické. Řekne vám pokyny, jak změnit první soubor, aby odpovídal druhému souboru.



Základní syntaxe příkazu diff

Základní syntaxediff>příkaz je následující:

diff [OPTION]... FILE1 FILE2>

Tady, ' FILE1`> a ' FILE2`> jsou dva soubory, které chcete porovnat.

' OPTION`> flag umožňuje přizpůsobit chování ` diff`> příkaz.



Možnosti dostupné v příkazu diff

Volba

Popis

-c>nebo--context>

java zkuste catch

Rozdíly ve výstupu v kontextovém režimu

-u>nebo--unified>

Rozdíly ve výstupu v jednotném režimu (výstižnější)

-i>nebo--ignore-case>

Proveďte srovnání bez ohledu na velikost písmen

–ignorujte celý prostor

Při porovnávání čar ignorujte mezery

-stručný

Výstup pouze v případě, že se soubory liší, žádné podrobnosti

– rekurzivní

Rekurzivně porovnávat adresáře

-y>nebo--side-by-side>

přejmenování složky v linuxu

Zobrazte výstup ve formátu vedle sebe

Praktická implementace Jak porovnávat soubory řádek po řádku v Linuxu? :

Porovnání dvou souborů

Porovnejte soubory řádek po řádku v Linuxu.

Řekněme, že máme dva soubory s názvy a.txt a b.txt obsahující 5 indických států.

cat a.txt cat b.txt>
zobrazení obsahu souborů pomocí příkazu cat

zobrazení obsahu souborů pomocí příkazu cat

Nyní použitím příkazu diff bez jakékoli možnosti získáme následující výstup:

diff a.txt b.txt>
porovnávání souborů řádek po řádku v linuxu

porovnávání souborů řádek po řádku v linuxu

Pojďme se podívat, co tento výstup znamená. První řádek dif výstup bude obsahovat:

  • čísla řádků odpovídající prvnímu souboru,
  • Zvláštní symbol a
  • Čísla řádků odpovídající druhému souboru.

Jako v našem případě, 0a1 což znamená po řádky 0 (úplně na začátku souboru) musíte přidat Tamil Nadu aby odpovídal druhému souboru s číslem řádku 1. Potom nám řekne, jaké řádky jsou v každém souboru, kterému předchází symbol:

  • Řádky, kterým předchází a < jsou řádky z prvního souboru.
  • Řádky před > jsou řádky z druhého souboru.
  • Další řádek obsahuje 2,3c3 což znamená, že z řádku 2 na řádek 3 v prvním souboru je třeba změnit, aby odpovídal řádku číslo 3 ve druhém souboru. Potom nám řekne ty řádky s výše uvedenými symboly.
  • Tři čárky (-) pouze oddělte řádky souboru 1 a souboru 2.

Jako shrnutí, aby byly oba soubory identické, nejprve přidejte Tamil Nadu v prvním souboru na úplném začátku, aby odpovídal řádku 1 druhého souboru po této změně řádku 2 a 3 prvního souboru, tj. Uttarpradéš a Kalkata s řádkem 3 druhého souboru, tj. Ándhrapradéš . Po této změně řádek 5 prvního souboru, tj. Džammú a Kašmír s řádkem 5 druhého souboru, tj. Uttarpradéš .

Odstranění řádku v souborech pomocí příkazu diff

Zvažte scénář, kdediff>označuje nutnost smazat řádek. Vzhledem ke dvěma souborům,a.txt>ab.txt>:

zobrazení obsahu souborů pomocí příkazu cat

zobrazení obsahu souborů pomocí příkazu cat

diff a.txt b.txt>
Odstranění řádku v souboru

Odstranění řádku v souboru

Zde výše uvedený výstup 3d2 znamená smazat řádek 3 prvního souboru, tj. Telangana takže oba soubory synchronizovat na řádku 2.

Zobrazení rozdílů v kontextovém režimu

Chcete-li zobrazit rozdíly v kontextovém režimu, použijte -C volba. Zkusme to pochopit na příkladu, máme dva soubory soubor1.txt a soubor2.txt :

zobrazení obsahu souborů pomocí příkazu cat

zobrazení obsahu souborů pomocí příkazu cat

diff -c file1.txt file2.txt>
Rozdíl v zobrazení v kontextovém režimu

Rozdíl v zobrazení v kontextovém režimu

Ve výše uvedeném výstupu:

  • První soubor je označen ` ***`> a druhý soubor je označen ` ---`> .
  • Řádek s ` ***************`> slouží jako oddělovač.
  • První dva řádky poskytují informace o souboru 1 a souboru 2, zobrazující název souboru, datum úpravy a čas úpravy.
  • Za tím tři hvězdičky „ ***`> následuje rozsah řádků od prvního souboru (řádky 1 až 4). Čtyři hvězdičky ****`> přijď další. Obsah prvního souboru se poté zobrazí se specifickými indikátory:
    • Pokud je řádek nezměněn, jsou před ním dvě mezery.
    • Pokud je třeba řádek změnit, je před ním uveden symbol a mezera. Symboly označují:
      • `+`> : Řádek ve druhém souboru, který má být přidán k prvnímu souboru pro identické výsledky.
      • `-`> : Řádek v prvním souboru, který má být odstraněn pro identické výsledky.
  • Tři čárky' ---`> následuje rozsah řádků z druhého souboru (řádky 1 až 4), oddělený čárkou. Čtyři čárky ----`> následovat a zobrazí se obsah druhého souboru.

Zobrazení rozdílů v jednotném režimu

Chcete-li zobrazit rozdíly v jednotném režimu, použijte -v volba. Je to podobné jako kontextový režim, ale je nezobrazuje žádné nadbytečné informace nebo zobrazuje informace ve stručné formě.

zobrazení obsahu souborů pomocí příkazu cat

zobrazení obsahu souborů pomocí příkazu cat

diff -u file1.txt file2.txt>
Rozdíl ve zobrazení v jednotném režimu

Rozdíl ve zobrazení v jednotném režimu

Ve výše uvedeném výstupu:

  • První soubor je označen ` ---`> a druhý soubor je označen ` +++`> .
  • První dva řádky obsahují informace o souboru 1 a souboru 2, včetně data a času změny.
  • Poté, ` @@ -1> `,`> 4 +1`> ,`> 4 @@`> označuje rozsah řádků pro oba soubory. V tomto případě představuje řádky 1 až 4 v obou souborech.
  • Následující řádky představují obsah souborů se specifickými indikátory:
    • Nezměněné řádky jsou zobrazeny bez předpony.
    • Řádky v prvním souboru, který se má odstranit, mají předponu->.
    • Řádky ve druhém souboru, který se má přidat, mají předponu+>.

V tomto příkladu výstup indikuje, že aby byly oba soubory identické, je třeba z prvního souboru odstranit řádky obsahující mv a comm (file1.txt>) a do něj je třeba přidat řádky obsahující diff a comm.

Porovnávání mezi soubory bez ohledu na velikost písmen

Ve výchozím nastavení ` diff`> rozlišuje velká a malá písmena. Chcete-li provést srovnání bez ohledu na velikost písmen, použijte ` -i`> volba:

zobrazení obsahu souborů pomocí příkazu cat

zobrazení obsahu souborů pomocí příkazu cat

Thediff>příkaz se pak použije k porovnání těchto souborů s-i>možnost, díky čemuž se v porovnání nerozlišují velká a malá písmena.

diff -i file1.txt file2.txt>
Porovnávání bez ohledu na velikost písmen

Porovnávání bez ohledu na velikost písmen

  • 2d1>: Označuje změnu na řádku 2 prvního souboru (file1.txt>). Thed>znamená delete a říká to odstranit řádek 2 z prvního souboru.
    • >: Tento řádek označuje obsah řádku, který má být odstraněn. V tomto případě je to mv.
  • 3a3>: Označuje přidání na řádek 3 prvního souboru (file1.txt>). Thea>znamená přidat a říká přidat řádek na pozici 3.
    • >rozdíl>: Tento řádek představuje obsah, který má být přidán. V tomto případě je to rozdíl.

Stručně řečeno, výstup nám říká, že aby byly oba soubory identické (ignorujeme velká a malá písmena), musíme odstranit řádek obsahující mv z prvního souboru (file1.txt>) a přidejte řádek diff na stejné pozici. Thediff>příkaz, s-i>možnost umožňuje srovnání bez ohledu na malá a velká písmena, takže mv a MV jsou během analýzy považovány za stejné.

Zobrazujidiff>Verze

Chcete-li zkontrolovat verzi ` diff`> nainstalovaný ve vašem systému, použijte ` --version`> volba:

diff --version>
Zobrazení verze příkazu diff

Zobrazení verze příkazu diff

Tento příkaz poskytuje informace o verzi, licencování a autorech souboru ` diff`> utility.

Často kladené otázky k příkazu diff – FAQ

Jak mohu použítdiff>příkaz pro porovnání dvou souborů řádek po řádku v Linuxu?

Chcete-li porovnat dva soubory řádek po řádku pomocídiff>příkaz, jednoduše použijte následující syntaxi:

diff file1.txt file2.txt>

Tento příkaz zobrazí rozdíly mezi těmito dvěma soubory, zvýrazní přidání, odstranění a úpravy.

Mohu ignorovat rozdíly mezi mezerami při porovnávání souborů sdiff>příkaz?

Ano,diff>příkaz poskytuje-w>nebo--ignore-all-space>možnost ignorovat rozdíly mezi mezerami. Například:

diff -w file1.txt file2.txt>

To je užitečné zejména při porovnávání souborů kódu, kde změny odsazení nebo mezer nejsou významné.

Jak mohu vytvořit soubor opravy pomocídiff>příkaz?

Chcete-li vytvořit soubor opravy představující rozdíly mezi dvěma soubory, použijte-u>volbu a přesměrujte výstup do souboru:

diff -u file1.txt file2.txt>mypatch.patch>

Vygenerovaný soubor opravy lze později použít k synchronizaci jiného souboru se změnami.

b plus strom

V čem je jednotný formátdiff>výstup a jak se liší od kontextového formátu?

Jednotný formát (` -u`> možnost) v ` diff`> výstup poskytuje stručnější a čitelnější znázornění rozdílů ve srovnání s kontextovým formátem (` -c`> volba). Zobrazuje změny v kompaktnější podobě, což usnadňuje pochopení změn mezi soubory.

Jak mohu rekurzivně porovnat dva adresáře v Linuxu pomocídiff>příkaz?

Chcete-li rekurzivně porovnat dva adresáře a jejich obsah, použijte ` -r`> nebo ' --recursive`> možnost sdiff>příkaz:

diff -r directory1/ directory2/>

Tento příkaz porovná všechny soubory v zadaných adresářích a poskytne podrobné informace o rozdílech.

Závěr

Ve světě Linuxu je porovnávání souborů běžným úkolem systémových administrátorů a vývojářů. ' diff> command je užitečný nástroj, který v tomto procesu pomáhá. Tento článek se zabývá tím, jak používat ` diff`> pro porovnání souborů řádek po řádku v Linuxu. Pokrývá základní syntaxi, důležité možnosti, jako je kontextový režim a jednotný režim, a praktické aplikace, jako je vytváření záplatových souborů a rekurzivní porovnávání adresářů. Ať už ladíte kód nebo zajišťujete integritu souborů, rozumíte a ovládáte ` diff`> je nezbytný pro efektivní správu souborů v Linuxu.