logo

Com comparar fitxers línia per línia a Linux | Comandament diff

Al món de Linux, gestionar i comparar fitxers és una tasca habitual tant per als administradors de sistemes com per als desenvolupadors. La capacitat de comparar fitxers línia per línia és crucial per identificar diferències, depurar codi i garantir la integritat de les dades. Una eina poderosa que facilita aquest procés és eldiff>comandament. En aquest article, explorarem com utilitzar eldiff>comanda per comparar fitxers línia per línia a Linux.

Taula de contingut



Comprensió de l'ordre diff

diff significa diferència .Eldiff>L'ordre és una utilitat versàtil que està preinstal·lada a la majoria de distribucions de Linux. El seu objectiu principal és comparar el contingut de dos fitxers i mostrar les diferències entre ells. L'ordre proporciona una manera completa de ressaltar els canvis, les addicions i les supressions en un format clar i llegible.

q1 q2 q3 q4

Aquesta ordre s'utilitza per mostrar les diferències en els fitxers comparant els fitxers línia per línia. A diferència dels seus companys, cmp i com , ens indica quines línies d'un fitxer s'han de canviar per fer que els dos fitxers siguin idèntics.

L'important a recordar és això dif utilitza certs símbols especials i instruccions que són necessaris per fer dos fitxers idèntics. Us indica les instruccions sobre com canviar el primer fitxer perquè coincideixi amb el segon fitxer.



Sintaxi bàsica de l'ordre diff

La sintaxi bàsica deldiff>la comanda és la següent:

diff [OPTION]... FILE1 FILE2>

Aquí, ` FILE1`> i ` FILE2`> són els dos fitxers que voleu comparar.

El ` OPTION`> La bandera us permet personalitzar el comportament del fitxer ` diff`> comandament.



Opcions disponibles a l'ordre diff

Opció

Descripció

-c>o--context>

Diferències de sortida en mode context

-u>o--unified>

Diferències de sortida en mode unificat (més concís)

-i>o--ignore-case>

Feu una comparació sense distinció de majúscules i minúscules

-ignorar-tot l'espai

Ignoreu els espais en blanc quan compareu línies

-breu

Sortida només si els fitxers són diferents, sense detalls

-recursiu

Compara de manera recursiva els directoris

-y>o--side-by-side>

Mostra la sortida en un format de costat a costat

Implementació pràctica de Com comparar fitxers línia per línia a Linux? :

Comparació de dos fitxers

Compareu els fitxers línia per línia a Linux.

centrar una imatge en css

Suposem que tenim dos fitxers amb noms a.txt i b.txt que conté 5 estats indis.

cat a.txt cat b.txt>
mostrant el contingut dels fitxers mitjançant l'ordre cat

mostrant el contingut dels fitxers mitjançant l'ordre cat

Ara, aplicant l'ordre diff sense cap opció, obtenim la següent sortida:

diff a.txt b.txt>
comparació de fitxers línia per línia a Linux

comparació de fitxers línia per línia a Linux

Fem una ullada a què significa aquesta sortida. La primera línia del dif La sortida contindrà:

  • Números de línia corresponents al primer fitxer,
  • Un símbol especial i
  • Números de línia corresponents al segon fitxer.

Com en el nostre cas, 0a1 que significa després les línies 0 (al principi del fitxer) cal afegir Tamil Nadu perquè coincideixi amb la segona línia del fitxer número 1. A continuació, ens indica quines són aquestes línies a cada fitxer precedides del símbol:

  • Línies precedides d'a < són línies del primer fitxer.
  • Línies precedides de > són línies del segon fitxer.
  • La línia següent conté 2,3c3 el que significa que de la línia 2 a la línia 3 del primer fitxer s'ha de canviar perquè coincideixi amb la línia número 3 del segon fitxer. A continuació, ens indica aquelles línies amb els símbols anteriors.
  • Els tres guions (—) només heu de separar les línies del fitxer 1 i del fitxer 2.

Com a resum per fer que els dos fitxers siguin idèntics, primer afegiu Tamil Nadu al primer fitxer al principi per fer coincidir la línia 1 del segon fitxer després d'aquest canvi de línia 2 i 3 del primer fitxer, és a dir. Uttar Pradesh i Calcuta amb la línia 3 del segon fitxer, és a dir. Andhra Pradesh . Després d'això, canvieu la línia 5 del primer fitxer, és a dir. Jammu i Caixmir amb la línia 5 del segon fitxer, és a dir. Uttar Pradesh .

Suprimir una línia als fitxers mitjançant l'ordre diff

Considereu l'escenari ondiff>indica la necessitat d'esborrar una línia. Donats dos fitxers,a.txt>ib.txt>:

mostrant el contingut dels fitxers mitjançant l'ordre cat

mostrant el contingut dels fitxers mitjançant l'ordre cat

diff a.txt b.txt>
Esborrar una línia en un fitxer

Esborrar una línia en un fitxer

Aquí sobre la sortida 3d2 significa suprimir la línia 3a del primer fitxer, és a dir. Telangana de manera que tant els fitxers sincronitzar-se a la línia 2.

Visualització de diferències en mode context

Per veure les diferències en el mode de context, utilitzeu -c opció. Intentem entendre això amb un exemple, tenim dos fitxers fitxer1.txt i fitxer2.txt :

mostrant el contingut dels fitxers mitjançant l'ordre cat

mostrant el contingut dels fitxers mitjançant l'ordre cat

diff -c file1.txt file2.txt>
Visualització de la diferència en el mode de context

Visualització de la diferència en el mode de context

A la sortida anterior:

  • El primer fitxer es denota amb ` ***`> , i el segon fitxer es denota amb ` ---`> .
  • La línia amb ` ***************`> serveix com a separador.
  • Les dues primeres línies proporcionen informació sobre el fitxer 1 i el fitxer 2, mostrant el nom del fitxer, la data de modificació i l'hora de modificació.
  • A continuació, tres asteriscs ` ***`> van seguits d'un interval de línies des del primer fitxer (línies 1 a 4). Quatre asteriscs ` ****`> vingui el següent. A continuació, es mostra el contingut del primer fitxer amb indicadors específics:
    • Si una línia no canvia, se li prefixa dos espais.
    • Si s'ha de canviar una línia, se li prefixa un símbol i un espai. Els símbols indiquen:
      • `+`> : una línia del segon fitxer que s'afegirà al primer fitxer per obtenir resultats idèntics.
      • `-`> : una línia del primer fitxer que s'ha de suprimir per obtenir resultats idèntics.
  • Tres guions ` ---`> van seguits d'un interval de línies del segon fitxer (línies 1 a 4), separats per una coma. Quatre guions ` ----`> segueix i es mostra el contingut del segon fitxer.

Visualització de diferències en el mode unificat

Per veure les diferències en el mode unificat, utilitzeu -en opció. És similar al mode context, però això no mostra cap informació redundant o mostra la informació de forma concisa.

mostrant el contingut dels fitxers mitjançant l'ordre cat

mostrant el contingut dels fitxers mitjançant l'ordre cat

diff -u file1.txt file2.txt>
Diferències de visualització en el mode unificat

Diferències de visualització en el mode unificat

java lambda

A la sortida anterior:

  • El primer fitxer s'indica amb ` ---`> , i el segon fitxer s'indica amb ` +++`> .
  • Les dues primeres línies proporcionen informació sobre el fitxer 1 i el fitxer 2, inclosa la data i l'hora de modificació.
  • Després d'això, ` @@ -1> `,`> 4 +1`> ,`> 4 @@`> indica l'interval de línies per als dos fitxers. En aquest cas, representa les línies 1 a 4 dels dos fitxers.
  • Les línies següents representen el contingut dels fitxers amb indicadors específics:
    • Les línies sense canvis es mostren sense cap prefix.
    • Les línies del primer fitxer que s'han d'eliminar tenen el prefix->.
    • Les línies del segon fitxer que cal afegir tenen el prefix+>.

En aquest exemple, la sortida indica que per fer que els dos fitxers siguin idèntics, les línies que contenen mv i comm s'han de suprimir del primer fitxer (file1.txt>), i cal afegir-hi les línies que contenen diff i comm.

Comparació entre fitxers sense distinció de majúscules i minúscules

Per defecte, ` diff`> és sensible a majúscules i minúscules. Per fer una comparació que no distingeix entre majúscules i minúscules, utilitzeu ` -i`> opció:

mostrant el contingut dels fitxers mitjançant l'ordre cat

mostrant el contingut dels fitxers mitjançant l'ordre cat

Eldiff>L'ordre s'utilitza llavors per comparar aquests fitxers amb el-i>opció, que fa que la comparació no distingeix entre majúscules i minúscules.

diff -i file1.txt file2.txt>
Comparació sense distinció entre majúscules i minúscules

Comparació sense distinció entre majúscules i minúscules

  • 2d1>: Això indica un canvi a la línia 2 del primer fitxer (file1.txt>). Eld>significa suprimir i diu que elimineu la línia 2 del primer fitxer.
    • >: Aquesta línia indica el contingut de la línia que s'ha d'esborrar. En aquest cas, és mv.
  • 3a3>: Això indica una addició a la línia 3 del primer fitxer (file1.txt>). Ela>significa afegir i diu afegir una línia a la posició 3.
    • >diff>: Aquesta línia representa el contingut a afegir. En aquest cas, és diferent.

En resum, la sortida ens diu que per fer que els dos fitxers siguin idèntics (ignorant majúscules i minúscules), hem d'esborrar la línia que conté mv del primer fitxer (file1.txt>) i afegiu la diferència de línia a la mateixa posició. Eldiff>comanda, amb el-i>opció, permet una comparació que no distingeix entre majúscules i minúscules, la qual cosa fa que consideri mv i MV com el mateix durant l'anàlisi.

Mostrantdiff>Versió

Per comprovar la versió de ` diff`> instal·lat al vostre sistema, utilitzeu el fitxer ` --version`> opció:

diff --version>
Es mostra la versió de l'ordre diff

Es mostra la versió de l'ordre diff

Aquesta ordre proporciona informació sobre la versió, la llicència i els autors del fitxer ` diff`> utilitat.

Preguntes freqüents sobre l'ordre diff - Preguntes freqüents

Com faig servir eldiff>comanda per comparar dos fitxers línia per línia a Linux?

Per comparar dos fitxers línia per línia utilitzant eldiff>comanda, només cal que utilitzeu la sintaxi següent:

diff file1.txt file2.txt>

Aquesta ordre mostrarà les diferències entre els dos fitxers, destacant les addicions, les supressions i les modificacions.

Puc ignorar les diferències d'espais en blanc mentre compare fitxers amb eldiff>comandament?

Sí, eldiff>l'ordre proporciona el-w>o--ignore-all-space>opció per ignorar les diferències d'espais en blanc. Per exemple:

el meu flixer
diff -w file1.txt file2.txt>

Això és especialment útil quan es comparen fitxers de codi on els canvis en el sagnat o l'espaiat no són significatius.

Com puc crear un fitxer de pedaç amb eldiff>comandament?

Per crear un fitxer de pedaç que representi les diferències entre dos fitxers, utilitzeu el fitxer-u>opció i redirigeix ​​la sortida a un fitxer:

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

El fitxer de pedaç generat es pot aplicar més tard per sincronitzar un altre fitxer amb els canvis.

En què és el format unificatdiff>sortida, i en què es diferencia del format del context?

El format unificat (` -u`> opció) a ` diff`> La sortida proporciona una representació més concisa i llegible de les diferències en comparació amb el format de context (` -c`> opció). Mostra els canvis en una forma més compacta, cosa que facilita la comprensió de les modificacions entre fitxers.

Com puc comparar recursivament dos directoris a Linux utilitzant eldiff>comandament?

Per comparar de manera recursiva dos directoris i el seu contingut, utilitzeu ` -r`> o ` --recursive`> opció amb eldiff>comandament:

diff -r directory1/ directory2/>

Aquesta ordre compara tots els fitxers dels directoris especificats i proporciona informació detallada sobre les diferències.

Conclusió

Al món Linux, comparar fitxers és una tasca habitual per als administradors i desenvolupadors de sistemes. El ` diff> L'ordre és una eina útil que ajuda en aquest procés. Aquest article explora com utilitzar ` diff`> per comparar fitxers línia per línia a Linux. Cobreix la sintaxi bàsica, opcions importants com el mode context i el mode unificat, i aplicacions pràctiques com la creació de fitxers de pedaços i la comparació recursiva de directoris. Tant si esteu depurant codi com si esteu garantint la integritat del fitxer, entenent i dominant el ` diff`> L'ordre és essencial per a una gestió eficient de fitxers a Linux.