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, je diff> 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
- Základná syntax príkazu diff
- Možnosti dostupné v príkaze diff
- Praktická implementácia Ako porovnávať súbory riadok po riadku v Linuxe? :
- Porovnanie dvoch súborov
- Odstránenie riadku v súboroch pomocou príkazu diff
- Zobrazenie rozdielov v kontextovom režime
- Zobrazenie rozdielov v zjednotenom režime
- Porovnávanie medzi súbormi bez rozlišovania malých a veľkých písmen
- Zobrazuje sa rozdielna verzia
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á syntax diff> 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ť | Popis |
|---|---|
| | Výstupné rozdiely v kontextovom režime |
| | Rozdiely vo výstupe v zjednotenom režime (výstižnejšie) |
| | Vykonajte porovnanie bez ohľadu na veľkosť písmen |
| –ignorujte celý priestor | 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 |
| | 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
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
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, kde diff> označuje potrebu vymazať riadok. Vzhľadom na dva súbory, a.txt> a b.txt> :
zobrazenie obsahu súborov pomocou príkazu cat
diff a.txt b.txt
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
diff -c file1.txt file2.txt
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
diff -u file1.txt file2.txt
Rozdiel v zobrazení v zjednotenom režime
Vo vyššie uvedenom výstupe:
- 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
The diff> 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
-
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. The diff> 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é.
Zobrazovanie diff> 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
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 pomocou
diff>príkaz, jednoducho použite nasledujúcu syntax:diff file1.txt file2.txtTento príkaz zobrazí rozdiely medzi týmito dvoma súbormi, pričom zvýrazní pridania, vymazania a úpravy.
Môžem ignorovať rozdiely medzi medzerami pri porovnávaní súborov s diff> 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.txtToto 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 pomocou diff> 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.patchVygenerovaný opravný súbor je možné použiť neskôr na synchronizáciu iného súboru so zmenami.
V čom je jednotný formát diff> 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 pomocou diff> 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.