În lumea Linux, gestionarea și compararea fișierelor este o sarcină comună atât pentru administratorii de sistem, cât și pentru dezvoltatori. Capacitatea de a compara fișierele linie cu linie este crucială pentru identificarea diferențelor, depanarea codului și asigurarea integrității datelor. Un instrument puternic care facilitează acest proces estediff>
comanda. În acest articol, vom explora cum să folosimdiff>
comandă pentru a compara fișierele linie cu linie în Linux.
Cuprins
- Sintaxa de bază a comenzii diff
- Opțiuni disponibile în comanda diff
- Implementarea practică a Cum se compară fișierele linie cu linie în Linux? :
- Compararea a două fișiere
- Ștergerea unei linii din fișiere folosind comanda diff
- Vizualizarea diferențelor în modul context
- Vizualizarea diferențelor în modul unificat
- Compararea între fișiere fără distincție între majuscule și minuscule
- Se afișează versiunea diferită
Înțelegerea comenzii diff
diff reprezintă diferență .Celdiff>
comanda este un utilitar versatil care este preinstalat pe majoritatea distribuțiilor Linux. Scopul său principal este de a compara conținutul a două fișiere și de a afișa diferențele dintre ele. Comanda oferă o modalitate cuprinzătoare de a evidenția modificările, completările și ștergerile într-un format clar și lizibil.
Această comandă este folosită pentru a afișa diferențele dintre fișiere prin compararea fișierelor linie cu linie. Spre deosebire de colegii săi membri, cmp și com , ne spune ce linii dintr-un fișier trebuie să fie modificate pentru a face cele două fișiere identice.
Important de reținut este că dif foloseste anumite simboluri speciale și instrucțiuni care sunt necesare pentru a face două fișiere identice. Vă spune instrucțiunile despre cum să schimbați primul fișier pentru a se potrivi cu cel de-al doilea fișier.
Sintaxa de bază a comenzii diff
Sintaxa de bază adiff>
comanda este următoarea:
lista in java
diff [OPTION]... FILE1 FILE2>
Aici, ` FILE1`>
și ` FILE2`>
sunt cele două fișiere pe care doriți să le comparați.
` OPTION`>
steag vă permite să personalizați comportamentul ` diff`>
comanda.
Opțiuni disponibile în comanda diff
Opțiune | Descriere |
---|---|
| Diferențele de ieșire în modul context |
| Diferențele de ieșire în modul unificat (mai concise) |
| Efectuați o comparație care nu ține seama de majuscule și minuscule |
– ignora-tot-spațiul c număr aleator | Ignorați spațiile albe când comparați liniile |
-scurt | Ieșiți numai dacă fișierele diferă, fără detalii |
– recursiv | Comparați recursiv directoare |
| Afișați rezultatul într-un format alăturat |
Implementarea practică a Cum se compară fișierele linie cu linie în Linux? :
Compararea a două fișiere
Comparați fișierele linie cu linie în Linux.
Să presupunem că avem două fișiere cu nume a.txt și b.txt conţinând 5 state indiene.
cat a.txt cat b.txt>

afișarea conținutului fișierelor folosind comanda cat
Acum, aplicând comanda diff fără nicio opțiune, obținem următoarea ieșire:
diff a.txt b.txt>

compararea fișierului linie cu linie în linux
Să aruncăm o privire la ce înseamnă această ieșire. Prima linie a dif ieșirea va conține:
cast sql
- Numerele liniilor corespunzătoare primului fișier,
- Un simbol special și
- Numerele liniilor corespunzătoare celui de-al doilea fișier.
Ca și în cazul nostru, 0a1 care înseamnă după liniile 0 (la începutul fișierului) trebuie să le adăugați Tamil Nadu pentru a se potrivi cu a doua linie de fișier numărul 1. Apoi ne spune care sunt acele linii în fiecare fișier precedat de simbolul:
- Linii precedate de a < sunt linii din primul fișier.
- Linii precedate de > sunt rânduri din al doilea fișier.
- Rândul următor conține 2,3c3 ceea ce înseamnă că de la linia 2 la linia 3 din primul fișier trebuie schimbată pentru a se potrivi cu numărul 3 din al doilea fișier. Apoi ne spune acele linii cu simbolurile de mai sus.
- Cele trei liniute (—) separați doar rândurile fișierului 1 și fișierului 2.
Ca un rezumat pentru a face ambele fișiere identice, mai întâi adăugați Tamil Nadu în primul fișier la început să se potrivească cu linia 1 a celui de-al doilea fișier după aceea schimbarea linia 2 și 3 a primului fișier, adică Uttar Pradesh și Kolkata cu rândul 3 al celui de-al doilea fișier i.e. Andhra Pradesh . După aceea, schimbați linia 5 a primului fișier, adică Jammu și Kashmir cu rândul 5 al celui de-al doilea fișier, adică Uttar Pradesh .
Ștergerea unei linii din fișiere folosind comanda diff
Luați în considerare scenariul în carediff>
indică necesitatea ștergerii unei linii. Având în vedere două fișiere,a.txt>
șib.txt>
:

afișarea conținutului fișierelor folosind comanda cat
diff a.txt b.txt>

Ștergerea unei linii din fișier
Aici mai sus de ieșire 3d2 înseamnă ștergeți linia 3 a primului fișier, adică Telangana astfel încât atât dosarele sincronizeaza-te la linia 2.
Vizualizarea diferențelor în modul context
Pentru a vedea diferențele în modul context, utilizați -c opțiune. Să încercăm să înțelegem asta cu un exemplu, avem două fișiere fișier1.txt și fișier2.txt :

afișarea conținutului fișierelor folosind comanda cat
diff -c file1.txt file2.txt>

Vizualizarea diferențelor în modul context
În rezultatul de mai sus:
- Primul fișier este notat cu `
***`>
, iar al doilea fișier este notat cu `---`>
. - Linia cu `
***************`>
servește drept separator. - Primele două rânduri oferă informații despre fișierul 1 și fișierul 2, afișând numele fișierului, data modificării și ora modificării.
- În continuare, trei asteriscuri `
***`>
sunt urmate de un interval de linii de la primul fișier (liniile 1 până la 4). Patru asteriscuri `****`>
vino mai departe. Conținutul primului fișier este apoi afișat cu indicatori specifici:- Dacă o linie este neschimbată, este prefixată de două spații.
- Dacă o linie trebuie schimbată, aceasta este prefixată de un simbol și de un spațiu. Simbolurile indică:
-
`+`>
: O linie din al doilea fișier care urmează să fie adăugată la primul fișier pentru rezultate identice. -
`-`>
: O linie din primul fișier care trebuie șters pentru rezultate identice.
-
- Trei liniuțe `
---`>
sunt urmate de un interval de linii de la al doilea fișier (liniile 1 până la 4), separate prin virgulă. Patru liniuțe `----`>
urmați și este afișat conținutul celui de-al doilea fișier.
Vizualizarea diferențelor în modul unificat
Pentru a vedea diferențele în modul unificat, utilizați -în opțiune. Este similar cu modul context, dar acesta nu afișează informații redundante sau arată informațiile într-o formă concisă.
sari peste lista

afișarea conținutului fișierelor folosind comanda cat
diff -u file1.txt file2.txt>

Diferența de vizualizare în modul Unificat
În rezultatul de mai sus:
- Primul fișier este indicat prin `
---`>
, iar al doilea fișier este indicat prin `+++`>
. - Primele două rânduri oferă informații despre fișierul 1 și fișierul 2, inclusiv data și ora modificării.
- După aceea, `
@@ -1>
`,`>
4 +1`>
,`>
4 @@`>
denotă intervalul de linii pentru ambele fișiere. În acest caz, reprezintă liniile de la 1 la 4 în ambele fișiere. - Rândurile următoare reprezintă conținutul fișierelor cu indicatori specifici:
- Liniile neschimbate sunt afișate fără prefix.
- Liniile din primul fișier care trebuie șters sunt prefixate cu
->
. - Liniile din al doilea fișier care urmează să fie adăugat sunt prefixate cu
+>
.
În acest exemplu, rezultatul indică faptul că, pentru a face ambele fișiere identice, liniile care conțin mv și comm trebuie șterse din primul fișier (file1.txt>
), iar liniile care conțin diff și comm trebuie adăugate la acesta.
Compararea între fișiere fără distincție între majuscule și minuscule
În mod implicit, ` diff`>
este sensibil la majuscule. Pentru a efectua o comparație care nu ține seama de majuscule și minuscule, utilizați ` -i`>
opțiune:

afișarea conținutului fișierelor folosind comanda cat
Thediff>
Comanda este apoi folosită pentru a compara aceste fișiere cu-i>
opțiune, ceea ce face ca comparația să nu țină seama de majuscule și minuscule.
diff -i file1.txt file2.txt>

Compararea fără majuscule
2d1>
: Aceasta indică o modificare în linia 2 a primului fișier (file1.txt>
). Thed>
înseamnă ștergere și spune să ștergeți linia 2 din primul fișier.>
: Această linie indică conținutul liniei de șters. În acest caz, este mv.
3a3>
: Aceasta indică o adăugare în rândul 3 al primului fișier (file1.txt>
). Thea>
înseamnă adăugare și spune să adăugați o linie la poziția 3.>dif>
: Această linie reprezintă conținutul care trebuie adăugat. În acest caz, este diferit.
În rezumat, rezultatul ne spune că, pentru a face ambele fișiere identice (ignorând majuscule, trebuie să ștergem linia care conține mv din primul fișier (file1.txt>
) și adăugați diferența de linie în aceeași poziție. Thediff>
comanda, cu-i>
opțiunea, permite o comparație care nu ține seama de majuscule, făcându-l să considere mv și MV ca aceleași în timpul analizei.
Afișareadiff>
Versiune
Pentru a verifica versiunea lui ` diff`>
instalat pe sistemul dvs., utilizați ` --version`>
opțiune:
diff --version>

Se afișează versiunea comenzii diff
Această comandă oferă informații despre versiunea, licențierea și autorii fișierului ` diff`>
utilitate.
Întrebări frecvente pe comanda diff – Întrebări frecvente
Cum folosescdiff>
comandă pentru a compara două fișiere linie cu linie în Linux?
Pentru a compara două fișiere linie cu linie utilizând
diff>
comandă, pur și simplu utilizați următoarea sintaxă:diff file1.txt file2.txt>Această comandă va afișa diferențele dintre cele două fișiere, evidențiind completările, ștergerile și modificările.
Pot ignora diferențele de spații albe în timp ce compar fișierele cudiff>
comanda?
Da cel
diff>
comanda oferă-w>
sau--ignore-all-space>
opțiunea de a ignora diferențele de spații albe. De exemplu:diff -w file1.txt file2.txt>Acest lucru este util în special atunci când se compară fișiere de cod în care modificările de indentare sau spațiere nu sunt semnificative.
Cum pot crea un fișier de corecție folosinddiff>
comanda?
Pentru a crea un fișier de corecție care să reprezinte diferențele dintre două fișiere, utilizați
-u>
opțiunea și redirecționează rezultatul către un fișier:un obiect în javadiff -u file1.txt file2.txt>mypatch.patch>Fișierul de corecție generat poate fi aplicat ulterior pentru a sincroniza un alt fișier cu modificările.
În ce este formatul unificatdiff>
ieșire și prin ce este diferită de formatul contextului?
Formatul unificat (`
-u`>
opțiune) în `diff`>
ieșirea oferă o reprezentare mai concisă și mai lizibilă a diferențelor în comparație cu formatul de context (`-c`>
opțiune). Afișează modificările într-o formă mai compactă, facilitând înțelegerea modificărilor între fișiere.
Cum compar recursiv două directoare în Linux folosinddiff>
comanda?
Pentru a compara recursiv două directoare și conținutul acestora, utilizați `
-r`>
sau `--recursive`>
opțiunea cudiff>
comanda:diff -r directory1/ directory2/>Această comandă compară toate fișierele din directoarele specificate și oferă informații detaliate despre diferențe.
Concluzie
În lumea Linux, compararea fișierelor este o sarcină comună pentru administratorii de sistem și dezvoltatori. ` diff>
comanda este un instrument la îndemână care ajută în acest proces. Acest articol explorează cum să utilizați ` diff`>
pentru a compara fișierele linie cu linie în Linux. Acesta acoperă sintaxa de bază, opțiuni importante precum modul context și modul unificat și aplicații practice, cum ar fi crearea de fișiere de corecție și compararea recursiv a directoarelor. Indiferent dacă depanați codul sau asigurați integritatea fișierului, înțelegeți și stăpâniți ` diff`>
comanda este esențială pentru gestionarea eficientă a fișierelor în Linux.