Hvordan sammenligne filer linje for linje i Linux | diff Kommando

Hvordan sammenligne filer linje for linje i Linux | diff Kommando

I Linux-verdenen er administrasjon og sammenligning av filer en vanlig oppgave for systemadministratorer og utviklere. Evnen til å sammenligne filer linje for linje er avgjørende for å identifisere forskjeller, feilsøke kode og sikre integriteten til data. Et kraftig verktøy som letter denne prosessen er diff> kommando. I denne artikkelen vil vi utforske hvordan du bruker diff> kommando for å sammenligne filer linje for linje i Linux.

Innholdsfortegnelse

Forstå diff-kommandoen

diff står for forskjell .De diff> command er et allsidig verktøy som er forhåndsinstallert på de fleste Linux-distribusjoner. Dens primære formål er å sammenligne innholdet i to filer og vise forskjellene mellom dem. Kommandoen gir en omfattende måte å fremheve endringer, tillegg og slettinger i et klart og lesbart format.

Denne kommandoen brukes til å vise forskjellene i filene ved å sammenligne filene linje for linje. I motsetning til sine medmedlemmer, cmp og komm , forteller den oss hvilke linjer i en fil som skal endres for å gjøre de to filene identiske.

Det som er viktig å huske er det diff bruker visse spesielle symboler og bruksanvisning som kreves for å gjøre to filer identiske. Den forteller deg instruksjonene om hvordan du endrer den første filen for å få den til å matche den andre filen.

Grunnleggende syntaks for diff-kommando

Den grunnleggende syntaksen til diff> kommandoen er som følger:

diff [OPTION]... FILE1 FILE2 

Her, ` FILE1`> og ` FILE2`> er de to filene du vil sammenligne.

Den ` OPTION`> flagg lar deg tilpasse virkemåten til ` diff`> kommando.

Alternativer tilgjengelig i diff Command

Alternativ

Beskrivelse

-c> eller --context>

Utdataforskjeller i kontekstmodus

-u> eller --unified>

Utgangsforskjeller i enhetlig modus (mer konsis)

-i> eller --ignore-case>

Utfør en sammenligning uten store og små bokstaver

–ignorer-alt-rom

Ignorer mellomrom når du sammenligner linjer

-kort

Utdata bare om filene er forskjellige, ingen detaljer

-tilbakevendende

Sammenlign kataloger rekursivt

-y> eller --side-by-side>

Vis utdataene i et side-ved-side-format

Praktisk implementering av hvordan sammenligne filer linje for linje i Linux? :

Sammenligning av to filer

Sammenlign filer linje for linje i Linux.

La oss si at vi har to filer med navn a.txt og b.txt som inneholder 5 indiske stater.

cat a.txt cat b.txt 
vise innhold av filer ved hjelp av cat-kommando

visning av innhold i filer ved hjelp av cat-kommando

Nå, ved å bruke diff-kommando uten noe alternativ, får vi følgende utgang:

diff a.txt b.txt 
sammenligne fil linje for linje i linux

sammenligne fil linje for linje i linux

La oss ta en titt på hva denne utgangen betyr. Den første linjen i diff utdata vil inneholde:

  • Linjenummer som tilsvarer den første filen,
  • Et spesielt symbol og
  • Linjenummer som tilsvarer den andre filen.

Som i vårt tilfelle, 0a1 som betyr etter linjer 0 (helt i begynnelsen av filen) må du legge til Tamil Nadu for å matche den andre fillinje nummer 1. Den forteller oss deretter hva disse linjene er i hver fil med symbolet foran:

  • Linjer innledet av en < er linjer fra den første filen.
  • Linjer innledet av > er linjer fra den andre filen.
  • Neste linje inneholder 2,3c3 som betyr at fra linje 2 til linje 3 i den første filen må endres for å matche linje nummer 3 i den andre filen. Den forteller oss deretter linjene med symbolene ovenfor.
  • De tre strekene (—) bare skille linjene i fil 1 og fil 2.

Som et sammendrag for å gjøre begge filene identiske, legg først til Tamil Nadu i den første filen helt i begynnelsen for å matche linje 1 i andre fil etter det endre linje 2 og 3 i første fil, dvs. Uttar Pradesh og Kolkata med linje 3 i andre fil, dvs. Andhra Pradesh . Etter det endrer du linje 5 i første fil, dvs. Jammu og Kashmir med linje 5 i andre fil, dvs. Uttar Pradesh .

Slette en linje i filer med diff-kommando

Vurder scenariet hvor diff> indikerer behovet for å slette en linje. Gitt to filer, a.txt> og b.txt> :

vise innhold av filer ved hjelp av cat-kommando

visning av innhold i filer ved hjelp av cat-kommando

diff a.txt b.txt 
Slette en linje i fil

Slette en linje i fil

Her ovenfor utgang 3d2 betyr sletting av linje 3 i første fil, dvs. Telangana slik at begge filene Synkroniser på linje 2.

Vise forskjeller i kontekstmodus

For å se forskjeller i kontekstmodus, bruk -c alternativ. La oss prøve å forstå dette med eksempel, vi har to filer fil1.txt og fil2.txt :

vise innhold av filer ved hjelp av cat-kommando

visning av innhold i filer ved hjelp av cat-kommando

diff -c file1.txt file2.txt 
Se forskjell i kontekstmodus

Se forskjell i kontekstmodus

I utgangen ovenfor:

  • Den første filen er merket med ` ***`> , og den andre filen er merket med ` ---`> .
  • Linjen med ` ***************`> fungerer som en separator.
  • De to første linjene gir informasjon om fil 1 og fil 2, og viser filnavn, endringsdato og endringstidspunkt.
  • Etter det, tre stjerner ` ***`> etterfølges av et linjeområde fra den første filen (linje 1 til 4). Fire stjerner ` ****`> kom neste. Innholdet i den første filen vises deretter med spesifikke indikatorer:
    • Hvis en linje er uendret, settes den foran med to mellomrom.
    • Hvis en linje må endres, settes den foran med et symbol og et mellomrom. Symbolene indikerer:
      • `+`> : En linje i den andre filen som skal legges til den første filen for identiske resultater.
      • `-`> : En linje i den første filen som skal slettes for identiske resultater.
  • Tre streker ` ---`> etterfølges av et linjeområde fra den andre filen (linje 1 til 4), atskilt med komma. Fire streker ` ----`> følg, og innholdet i den andre filen vises.

Vise forskjeller i enhetlig modus

For å se forskjeller i enhetlig modus, bruk -i alternativ. Det ligner på kontekstmodus, men det viser ingen overflødig informasjon eller den viser informasjonen i kortfattet form.

vise innhold av filer ved hjelp av cat-kommando

vise innhold av filer ved hjelp av cat-kommando

diff -u file1.txt file2.txt 
Visningsforskjell i enhetlig modus

Visningsforskjell i enhetlig modus

I utgangen ovenfor:

  • Den første filen er indikert med ` ---`> , og den andre filen er indikert med ` +++`> .
  • De to første linjene gir informasjon om fil 1 og fil 2, inkludert endringsdato og -klokkeslett.
  • Etter det, ` @@ -1> `,`> 4 +1`> ,`> 4 @@`> angir linjeområdet for begge filene. I dette tilfellet representerer den linjene 1 til 4 i begge filene.
  • De påfølgende linjene representerer innholdet i filene med spesifikke indikatorer:
    • Uendrede linjer vises uten prefiks.
    • Linjer i den første filen som skal slettes er prefiks med -> .
    • Linjer i den andre filen som skal legges til, er prefiks med +> .

I dette eksemplet indikerer utdata at for å gjøre begge filene identiske, må linjene som inneholder mv og comm slettes fra den første filen ( file1.txt> ), og linjene som inneholder diff og comm må legges til den.

Uavhengig av store og små bokstaver Sammenligning mellom filer

Som standard, ` diff`> skiller mellom store og små bokstaver. For å utføre en sammenligning uten store og små bokstaver, bruk ` -i`> alternativ:

vise innhold av filer ved hjelp av cat-kommando

visning av innhold i filer ved hjelp av cat-kommando

De diff> kommandoen brukes deretter til å sammenligne disse filene med -i> alternativet, som gjør sammenligningen ufølsom for store og små bokstaver.

diff -i file1.txt file2.txt 
Uavhengig av store og små bokstaver Sammenligning

Uavhengig av store og små bokstaver Sammenligning

  • 2d1> : Dette indikerer en endring i linje 2 i den første filen ( file1.txt> ). De d> står for delete, og det står å slette linje 2 fra den første filen.
    • > : Denne linjen angir innholdet i linjen som skal slettes. I dette tilfellet er det mv.
  • 3a3> : Dette indikerer et tillegg i linje 3 i den første filen ( file1.txt> ). De a> står for add, og det står å legge til en linje ved posisjon 3.
    • >diff> : Denne linjen representerer innholdet som skal legges til. I dette tilfellet er det diff.

Oppsummert, utdataene forteller oss at for å gjøre begge filene identiske (ignorerer store og små bokstaver), må vi slette linjen som inneholder mv fra den første filen ( file1.txt> ) og legg til linjeforskjellen i samme posisjon. De diff> kommando, med -i> alternativet, tillater en sammenligning som ikke skiller mellom store og små bokstaver, slik at den vurderer mv og MV som de samme under analysen.

Viser diff> Versjon

For å sjekke versjonen av ` diff`> installert på systemet ditt, bruk ` --version`> alternativ:

diff --version 
Viser versjon av diff-kommandoen

Viser versjon av diff-kommandoen

Denne kommandoen gir informasjon om versjon, lisensiering og forfattere av ` diff`> nytte.

Ofte stilte spørsmål om diff Command – FAQs

Hvordan bruker jeg diff> kommando for å sammenligne to filer linje for linje i Linux?

For å sammenligne to filer linje for linje ved å bruke diff> kommandoen, bruk bare følgende syntaks:

diff file1.txt file2.txt 

Denne kommandoen viser forskjellene mellom de to filene, og fremhever tillegg, slettinger og modifikasjoner.

Kan jeg ignorere mellomromsforskjeller mens jeg sammenligner filer med diff> kommando?

Ja, det diff> kommandoen gir -w> eller --ignore-all-space> alternativet for å ignorere mellomromsforskjeller. For eksempel:

diff -w file1.txt file2.txt 

Dette er spesielt nyttig når du sammenligner kodefiler der endringer i innrykk eller mellomrom ikke er signifikante.

Hvordan kan jeg lage en patch-fil ved hjelp av diff> kommando?

For å lage en patch-fil som representerer forskjellene mellom to filer, bruk -u> alternativet og omdirigere utdataene til en fil:

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

Den genererte oppdateringsfilen kan brukes senere for å synkronisere en annen fil med endringene.

Hva er det enhetlige formatet i diff> output, og hvordan er det forskjellig fra kontekstformatet?

Det enhetlige formatet (` -u`> alternativ) i ` diff`> output gir en mer kortfattet og lesbar representasjon av forskjeller sammenlignet med kontekstformatet (` -c`> alternativ). Den viser endringer i en mer kompakt form, noe som gjør det lettere å forstå endringer mellom filer.

Hvordan sammenligner jeg to kataloger rekursivt i Linux ved å bruke diff> kommando?

For å rekursivt sammenligne to kataloger og deres innhold, bruk ` -r`> eller ` --recursive`> alternativet med diff> kommando:

diff -r directory1/ directory2/ 

Denne kommandoen sammenligner alle filene i de angitte katalogene og gir detaljert informasjon om forskjellene.

Konklusjon

I Linux-verdenen er sammenligning av filer en vanlig oppgave for systemadministratorer og utviklere. Den ` diff> kommando er et hendig verktøy som hjelper i denne prosessen. Denne artikkelen utforsker hvordan du bruker ` diff`> å sammenligne filer linje for linje i Linux. Den dekker grunnleggende syntaks, viktige alternativer som kontekstmodus og enhetlig modus, og praktiske applikasjoner som å lage oppdateringsfiler og rekursivt sammenligne kataloger. Enten du feilsøker kode eller sikrer filintegritet, forstår og mestrer ` diff`> kommandoen er avgjørende for effektiv filbehandling i Linux.