Cum se compară două fișiere în Linux

How Compare Two Files Linux



Dacă doriți să comparați două fișiere și să descifrați diferența, o comandă se numește dif este folosit. Acest ghid este axat pe furnizarea de utilizare a dif comanda cu diferite opțiuni pentru a obține diferența dintre două fișiere.

Deci, cum funcționează dif comanda funcționează de fapt? The dif comanda compară cele două fișiere și afișează o listă de diferențe între ambele fișiere. Mai precis, produce o listă de modificări care trebuie făcute în primul fișier pentru a se potrivi cu al doilea fișier. The dif comanda este, de asemenea, utilizată de programatori pentru a obține diferența dintre două fișiere de cod sursă pentru a dezvolta patch-uri.







Înainte de a vă scufunda în exemple, rețineți că ordinea fișierelor este foarte importantă. Pentru că dif comanda oferă ieșire pe baza ordinii fișierelor.



Cum se utilizează comanda diff în Linux pentru a compara fișiere:

Sintaxa dif comanda este menționată mai jos:



$dif [Opțiuni] [file1] [fișier2]

Mai întâi, creați două fișiere. Creez fișiere text cu numele fișier_test_1.txt și test_file_2.txt . Aceste fișiere conțin conținut cu o ușoară diferență:





Acum utilizați următoarea comandă pentru a obține diferența:



$diftest_file_1.txt test_file_2.txt

Ieșirea standard afișează liniile care se potrivesc în funcție de ordinea fișierelor menționate în comandă. Deci, să decodăm ieșirea:

Compararea fișierelor este etichetată și fiecare etichetă are un număr de ambele părți. Formatul este după cum urmează:

[Număr linie fișier 1] [Etichetă (a, c, d)] [Număr linie fișier 2]

Există trei etichete:

  • la - Adăugați: adăugați conținut în primul fișier pentru a-l sincroniza cu al doilea fișier.
  • c - Modificare: indică necesitatea unei modificări în conținutul primului fișier pentru a se potrivi cu al doilea fișier.
  • d - Ștergeți: eliminați conținutul din primul fișier pentru a se potrivi cu al doilea.

2d1 indică ștergerea liniei numărul 2 din primul fișier pentru a se potrivi cu al doilea fișier din linia numărul 1.

În mod similar, 4c3 înseamnă a face o modificare în a patra linie a primului fișier pentru a se potrivi cu numărul 3 al celui de-al doilea fișier, deoarece ambele linii sunt ușor diferite.

Există o altă metodă pentru a vedea diferența, utilizați dif comanda cu -și opțiune:

$dif -și -ÎN 60test_file_1.txt test_file_2.txt

În rezultatul de mai sus, conținutul fișier_test_1.txt este afișat în partea stângă, în timp ce conținutul text_file_2.txt este afișat în partea dreaptă. Diferența este indicată de simbolurile:

  • | - Linia este diferită în al doilea fișier
  • > - Linia este suplimentară în al doilea fișier
  • <— Line has been deleted from the second file

-W indică lățimea dintre conținutul a două fișiere. Pentru a obține separat și a vedea diferența, utilizați următoarele:

$dif -și -ÎN 60 --suppress-common-linestest_file_1.txt test_file_2.txt

Cum se obține ieșirea într-o singură linie utilizând comanda diff:

Dacă metoda etichetată vă este greu de decodat, atunci există o abordare mai simplă. Folosind -q opțiune cu dif comanda vă oferă ieșire într-o singură linie. Ei bine, fără informații suplimentare, totuși:

$dif -qtest_file_1.txt test_file_2.txt

Dacă fișierele diferă, atunci comanda de mai sus va da o ieșire. Dacă fișierele sunt identice, atunci nu va exista nicio ieșire. Pentru a demonstra acest lucru, creez o copie a fișier_test_1.txt folosind:

$cptest_file_1.txt test_file_3.txt

Un nou fișier va fi creat cu numele test_file_3.txt care conține același conținut pe care fișier_test_1.txt are. Acum, utilizați:

$dif -qtest_file_1.txt test_file_2.txt

Deoarece ambele fișiere au conținut similar, prin urmare, nu ar exista nicio ieșire.

Cum să verificați diferența fișierelor în modul contextual utilizând comanda diff:

Pentru a obține comparația în modul context, -c opțiunea va fi utilizată cu dif comanda:

$dif -ctest_file_1.txt test_file_2.txt

Să disecăm rezultatul.

Pentru a menține diferența, primul fișier este indicat de *** împreună cu data și ora creării, în timp ce al doilea fișier este indicat de -.

Următoarea linie semnifică o gamă de linii luate în considerare în timpul comparației. Pentru primul fișier, este *** 1,6 **** iar pentru al doilea fișier, este —1,5—- :

Diferența este indicată de simbolurile:

  • +: Linia nu este prezentă în primul fișier. Introduceți-l în primul fișier sau eliminați-l din al doilea fișier pentru a se potrivi cu ambele fișiere.
  • -: Linia există în primul fișier, dar nu în al doilea fișier. Încercați să îl inserați în al doilea fișier sau să îl eliminați din primul pentru a se potrivi cu ambele fișiere.
  • ! : Linia trebuie modificată pentru a se potrivi.

Cum să verificați diferența fișierelor în modul unificat utilizând comanda diff:

Modul unificat este destul de similar cu modul context, dar fără informații redundante. Steagul pe care îl folosim este -u :

$dif -utest_file_1.txt test_file_2.txt

În ieșire, primul fișier este indicat de - și al doilea de +++. Cea de-a doua linie arată numărul de linii luate în considerare pentru comparație în ambele fișiere, apoi conținutul care trebuie șters, adăugat sau modificat cu simbolurile cu ele. Nu va exista niciun simbol cu ​​linii similare în ambele fișiere.

Cum să ignorați sensibilitatea la majuscule și minuscule în timp ce utilizați comanda diff:

Dacă doriți să comparați fișierele în timp ce ignorați sensibilitatea la majuscule, utilizați -i steag:

$dif -itest_file_1.txt test_file_2.txt

Pentru demonstrație, am făcut D de Adânc în în primul fișier mic:

După cum se vede în prima comandă, diferența este indicată; în timpul utilizării -i această diferență a fost eliminată.

Câteva alte opțiuni utile ale dif comanda sunt enumerate mai jos:

Opțiune Descriere
-la Această opțiune tratează toate fișierele ca fișiere text
-B Ignoră modificările acolo unde liniile sunt goale
-ȘI Această opțiune ignoră extinderea filei
-Eu Acesta ignoră modificările la care se potrivesc toate liniile
-s Oferă ieșire atunci când două fișiere sunt identice
-în Ignoră tot spațiul alb
-CU Acesta ignoră spațiul alb la capătul liniei

Cum se folosește Vim Editor pentru a compara două fișiere:

O altă metodă pentru a compara două fișiere este utilizarea vimdiff comanda. Pentru aceasta, trebuie să aveți instalat vim:

$sudoaptinstalare am venit

Acum, pentru a compara două fișiere, utilizați:

$vimdiff test_file_1.txt test_file_2.txt

Ambele fișiere vor fi deschise una lângă alta. Porțiunea care nu se potrivește va fi evidențiată:

Cum se compară două fișiere folosind colordiff:

O altă abordare este un fel de extensie a dif comanda. Puteți face comparația mai identificabilă adăugând culori la ea. Pentru instalare utilizați:

$sudoaptinstalarecolordiff

Pentru a compara fișiere, utilizați:

$colordiff test_file_1.txt test_file_2.txt

Puteți înlocui dif cu colordiff pentru a obține ieșirea standard a dif comandă în format color.

Concluzie:

Pentru a compara fișiere în Linux și chiar în macOS, un utilitar folosit se numește diff. Utilitarul diff compară două fișiere și oferă informații despre diferențele dintre cele două fișiere. Dezvoltatorii folosesc în primul rând comanda diff pentru a crea fișiere patch.

În acest ghid, am discutat temeinic despre dif comanda și cum să o utilizați pentru a compara două fișiere cu opțiuni diferite. De asemenea, am învățat cum să folosim colordiff pentru a face diferențele de fișiere mai ușor de recunoscut. Dar dacă vi se pare greu de utilizat utilitarul bazat pe terminal, există și câteva instrumente bazate pe GUI, precum Kompare, DiffMerge, Meld - Diff Tool și Diffuse - GUI Giff Tool.