logo

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 erdiff>kommando. I denne artikkelen vil vi utforske hvordan du brukerdiff>kommando for å sammenligne filer linje for linje i Linux.

Innholdsfortegnelse



Forstå diff-kommandoen

diff står for forskjell .Dediff>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 tildiff>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 hvordiff>indikerer behovet for å slette en linje. Gitt to filer,a.txt>ogb.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 :

string.replaceall java
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

Dediff>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>). Ded>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>). Dea>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. Dediff>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.

Viserdiff>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 jegdiff>kommando for å sammenligne to filer linje for linje i Linux?

For å sammenligne to filer linje for linje ved å brukediff>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 meddiff>kommando?

Ja, detdiff>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 avdiff>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 idiff>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 å brukediff>kommando?

For å rekursivt sammenligne to kataloger og deres innhold, bruk ` -r`> eller ` --recursive`> alternativet meddiff>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.