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
- 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á 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 |
---|---|
| 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 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 |
| 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, 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
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:
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
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
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
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.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.