logo

Ako porovnávať súbory riadok po riadku v systéme Linux | príkaz diff

Vo svete Linuxu je správa a porovnávanie súborov bežnou úlohou systémových administrátorov aj vývojárov. Schopnosť porovnávať súbory riadok po riadku je rozhodujúca pre identifikáciu rozdielov, ladenie kódu a zabezpečenie integrity údajov. Jedným mocným nástrojom, ktorý uľahčuje tento proces, jediff>príkaz. V tomto článku sa pozrieme na to, ako používaťdiff>príkaz na porovnanie súborov riadok po riadku v systéme Linux.

Obsah



Pochopenie príkazu diff

diff znamená rozdiel .diff>command je všestranný nástroj, ktorý je predinštalovaný vo väčšine distribúcií Linuxu. Jeho primárnym účelom je porovnať obsah dvoch súborov a zobraziť rozdiely medzi nimi. Príkaz poskytuje komplexný spôsob zvýraznenia zmien, doplnení a vymazaní v jasnom a čitateľnom formáte.

Tento príkaz sa používa na zobrazenie rozdielov v súboroch porovnaním súborov riadok po riadku. Na rozdiel od svojich kolegov cmp a comm , hovorí nám, ktoré riadky v jednom súbore majú byť zmenené, aby boli tieto dva súbory identické.

Dôležité je zapamätať si to dif používa určité špeciálne symboly a inštrukcie ktoré sú potrebné na vytvorenie identických dvoch súborov. Povie vám pokyny, ako zmeniť prvý súbor, aby sa zhodoval s druhým súborom.



Základná syntax príkazu diff

Základná syntaxdiff>príkaz je nasledovný:

diff [OPTION]... FILE1 FILE2>

Tu, ' FILE1`> a ' FILE2`> sú dva súbory, ktoré chcete porovnať.

' OPTION`> príznak vám umožňuje prispôsobiť správanie ` diff`> príkaz.



Možnosti dostupné v príkaze diff

Možnosť

prevod reťazca na int

Popis

-c>alebo--context>

Výstupné rozdiely v kontextovom režime

-u>alebo--unified>

Rozdiely vo výstupe v zjednotenom režime (výstižnejšie)

-i>alebo--ignore-case>

Vykonajte porovnanie bez ohľadu na veľkosť písmen

–ignorujte celý priestor

formátovať dátum v jave

Pri porovnávaní čiar ignorujte medzery

– stručné

Výstup iba v prípade, že sa súbory líšia, žiadne podrobnosti

- rekurzívne

Rekurzívne porovnávať adresáre

-y>alebo--side-by-side>

Zobrazte výstup vo formáte vedľa seba

Praktická implementácia Ako porovnávať súbory riadok po riadku v Linuxe? :

Porovnanie dvoch súborov

Porovnajte súbory riadok po riadku v systéme Linux.

Povedzme, že máme dva súbory s menami a.txt a b.txt obsahujúce 5 indických štátov.

cat a.txt cat b.txt>
zobrazenie obsahu súborov pomocou príkazu cat

zobrazenie obsahu súborov pomocou príkazu cat

Teraz použitím príkazu diff bez akejkoľvek možnosti získame nasledujúci výstup:

diff a.txt b.txt>
porovnávanie súborov riadok po riadku v linuxe

porovnávanie súborov riadok po riadku v linuxe

Pozrime sa, čo tento výstup znamená. Prvý riadok dif výstup bude obsahovať:

  • čísla riadkov zodpovedajúce prvému súboru,
  • Špeciálny symbol a
  • Čísla riadkov zodpovedajúce druhému súboru.

Ako v našom prípade, 0a1 čo znamená po riadky 0 (na samom začiatku súboru) musíte pridať Tamilnádu aby sa zhodoval s číslom druhého riadku súboru 1. Potom nám povie, aké riadky sú v každom súbore, pred ktorým je symbol:

  • Riadky, ktorým predchádza a < sú riadky z prvého súboru.
  • Riadky, ktorým predchádza > sú riadky z druhého súboru.
  • Ďalší riadok obsahuje 2,3c3 čo znamená, že z riadku 2 na riadok 3 v prvom súbore je potrebné zmeniť tak, aby zodpovedal riadku číslo 3 v druhom súbore. Potom nám povie tie riadky s vyššie uvedenými symbolmi.
  • Tri čiarky (-) stačí oddeliť riadky súboru 1 a súboru 2.

Ako súhrn, aby boli oba súbory identické, najprv pridajte Tamilnádu v prvom súbore úplne na začiatku, aby sa zhodoval riadok 1 druhého súboru po tejto zmene riadok 2 a 3 prvého súboru, t.j. Uttarpradéš a Kalkata s riadkom 3 druhého súboru t.j. Ándhrapradéš . Po tejto zmene riadok 5 prvého súboru t.j. Džammú a Kašmír s riadkom 5 druhého súboru t.j. Uttarpradéš .

Odstránenie riadku v súboroch pomocou príkazu diff

Zvážte scenár, kdediff>označuje potrebu vymazať riadok. Vzhľadom na dva súbory,a.txt>ab.txt>:

orezanie reťazca javascript
zobrazenie obsahu súborov pomocou príkazu cat

zobrazenie obsahu súborov pomocou príkazu cat

diff a.txt b.txt>
Odstránenie riadku v súbore

Odstránenie riadku v súbore

Tu hore výstup 3d2 znamená vymazať 3. riadok prvého súboru t.j. Telangana tak, že oba súbory synchronizovať na riadku 2.

Zobrazenie rozdielov v kontextovom režime

Ak chcete zobraziť rozdiely v kontextovom režime, použite -c možnosť. Skúsme to pochopiť na príklade, máme dva súbory súbor1.txt a súbor2.txt :

zobrazenie obsahu súborov pomocou príkazu cat

zobrazenie obsahu súborov pomocou príkazu cat

diff -c file1.txt file2.txt>
Rozdiel v zobrazení v kontextovom režime

Rozdiel v zobrazení v kontextovom režime

Vo vyššie uvedenom výstupe:

  • Prvý súbor je označený ` ***`> a druhý súbor je označený ` ---`> .
  • Riadok s ` ***************`> slúži ako oddeľovač.
  • Prvé dva riadky poskytujú informácie o súbore 1 a súbore 2, pričom zobrazujú názov súboru, dátum úpravy a čas úpravy.
  • Potom tri hviezdičky „ ***`> za nimi nasleduje rozsah riadkov od prvého súboru (riadky 1 až 4). Štyri hviezdičky ****`> poď ďalej. Obsah prvého súboru sa potom zobrazí so špecifickými indikátormi:
    • Ak je riadok nezmenený, pred ním sú dve medzery.
    • Ak je potrebné zmeniť riadok, uvedie sa pred ním symbol a medzera. Symboly označujú:
      • `+`> : Riadok v druhom súbore, ktorý sa má pridať do prvého súboru pre rovnaké výsledky.
      • `-`> : Riadok v prvom súbore, ktorý sa má odstrániť, aby sa dosiahli rovnaké výsledky.
  • Tri čiarky ---`> za nimi nasleduje rozsah riadkov z druhého súboru (riadky 1 až 4), oddelené čiarkou. Štyri čiarky ----`> a zobrazí sa obsah druhého súboru.

Zobrazenie rozdielov v zjednotenom režime

Ak chcete zobraziť rozdiely v zjednotenom režime, použite -v možnosť. Je to podobné ako kontextový režim, ale je nezobrazuje žiadne nadbytočné informácie alebo zobrazuje informácie v stručnej forme.

zobrazenie obsahu súborov pomocou príkazu cat

zobrazenie obsahu súborov pomocou príkazu cat

diff -u file1.txt file2.txt>
Rozdiel v zobrazení v zjednotenom režime

Rozdiel v zobrazení v zjednotenom režime

Vo vyššie uvedenom výstupe:

hrubá bodka
  • Prvý súbor je označený ` ---`> a druhý súbor je označený ` +++`> .
  • Prvé dva riadky poskytujú informácie o súbore 1 a súbore 2 vrátane dátumu a času úpravy.
  • Potom, ` @@ -1> `,`> 4 +1`> ,`> 4 @@`> označuje rozsah riadkov pre oba súbory. V tomto prípade predstavuje riadky 1 až 4 v oboch súboroch.
  • Nasledujúce riadky predstavujú obsah súborov so špecifickými indikátormi:
    • Nezmenené riadky sa zobrazia bez predpony.
    • Riadky v prvom súbore, ktorý sa má odstrániť, majú predponu->.
    • Riadky v druhom súbore, ktorý sa má pridať, majú predponu+>.

V tomto príklade výstup naznačuje, že aby boli oba súbory identické, riadky obsahujúce mv a comm je potrebné odstrániť z prvého súboru (file1.txt>) a do neho je potrebné pridať riadky obsahujúce diff a comm.

Porovnávanie medzi súbormi bez rozlišovania malých a veľkých písmen

V predvolenom nastavení je ` diff`> rozlišuje veľké a malé písmená. Ak chcete vykonať porovnanie bez ohľadu na veľkosť písmen, použite znak ` -i`> možnosť:

zobrazenie obsahu súborov pomocou príkazu cat

zobrazenie obsahu súborov pomocou príkazu cat

Thediff>príkaz sa potom použije na porovnanie týchto súborov s-i>možnosť, vďaka ktorej sa pri porovnaní nerozlišujú malé a veľké písmená.

diff -i file1.txt file2.txt>
Porovnávanie bez ohľadu na veľkosť písmen

Porovnávanie bez ohľadu na veľkosť písmen

  • 2d1>: Označuje zmenu v riadku 2 prvého súboru (file1.txt>). Thed>znamená vymazať a hovorí o odstránení riadku 2 z prvého súboru.
    • >: Tento riadok označuje obsah riadku, ktorý sa má vymazať. V tomto prípade je to mv.
  • 3a3>: Označuje pridanie v riadku 3 prvého súboru (file1.txt>). Thea>znamená pridať a hovorí, že treba pridať riadok na pozíciu 3.
    • >rozdiel>: Tento riadok predstavuje obsah, ktorý sa má pridať. V tomto prípade je to rozdiel.

Stručne povedané, výstup nám hovorí, že na to, aby boli oba súbory identické (ignorujeme veľké a malé písmená), musíme z prvého súboru odstrániť riadok obsahujúci mv (file1.txt>) a pridajte riadkový rozdiel na rovnakú pozíciu. Thediff>príkaz, s-i>možnosť, umožňuje porovnanie bez ohľadu na veľkosť písmen, vďaka čomu sa mv a MV počas analýzy považujú za rovnaké.

Zobrazovaniediff>Verzia

Ak chcete skontrolovať verziu ` diff`> nainštalovaný vo vašom systéme, použite ` --version`> možnosť:

diff --version>
Zobrazuje sa verzia príkazu diff

Zobrazuje sa verzia príkazu diff

Tento príkaz poskytuje informácie o verzii, licenciách a autoroch súboru ` diff`> užitočnosť.

Často kladené otázky o príkaze diff – FAQ

Ako môžem použiťdiff>príkaz na porovnanie dvoch súborov riadok po riadku v systéme Linux?

Na porovnanie dvoch súborov riadok po riadku pomocoudiff>príkaz, jednoducho použite nasledujúcu syntax:

diff file1.txt file2.txt>

Tento príkaz zobrazí rozdiely medzi týmito dvoma súbormi, pričom zvýrazní pridania, vymazania a úpravy.

java rozdeliť reťazec podľa oddeľovača

Môžem ignorovať rozdiely medzi medzerami pri porovnávaní súborov sdiff>príkaz?

Áno,diff>príkaz poskytuje-w>alebo--ignore-all-space>možnosť ignorovať rozdiely medzi medzerami. Napríklad:

diff -w file1.txt file2.txt>

Toto je obzvlášť užitočné pri porovnávaní kódových súborov, kde zmeny v odsadení alebo medzier nie sú významné.

Ako môžem vytvoriť súbor opravy pomocoudiff>príkaz?

Ak chcete vytvoriť súbor opravy predstavujúci rozdiely medzi dvoma súbormi, použite príkaz-u>možnosť a presmerovať výstup do súboru:

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

Vygenerovaný opravný súbor je možné použiť neskôr na synchronizáciu iného súboru so zmenami.

V čom je jednotný formátdiff>výstup a ako sa líši od kontextového formátu?

Jednotný formát (` -u`> možnosť) v ` diff`> výstup poskytuje stručnejšie a čitateľnejšie znázornenie rozdielov v porovnaní s kontextovým formátom (` -c`> možnosť). Zobrazuje zmeny v kompaktnejšej forme, čo uľahčuje pochopenie úprav medzi súbormi.

Ako môžem rekurzívne porovnať dva adresáre v systéme Linux pomocoudiff>príkaz?

Na rekurzívne porovnanie dvoch adresárov a ich obsahu použite ` -r`> alebo ' --recursive`> možnosť sdiff>príkaz:

diff -r directory1/ directory2/>

Tento príkaz porovnáva všetky súbory v zadaných adresároch a poskytuje podrobné informácie o rozdieloch.

Záver

Vo svete Linuxu je porovnávanie súborov bežnou úlohou systémových administrátorov a vývojárov. ' diff> príkaz je užitočný nástroj, ktorý pomáha v tomto procese. Tento článok skúma, ako používať ` diff`> na porovnanie súborov riadok po riadku v systéme Linux. Zahŕňa základnú syntax, dôležité možnosti, ako je kontextový režim a jednotný režim, a praktické aplikácie, ako je vytváranie opravných súborov a rekurzívne porovnávanie adresárov. Či už ladíte kód alebo zabezpečujete integritu súboru, rozumiete a ovládate ` diff`> príkaz je nevyhnutný pre efektívnu správu súborov v systéme Linux.