Denne veiledningen viser hvordan du bruker Linux til å sammenligne to filer og utføre forskjellen til skjermen eller til en fil.
Du trenger ikke å installere noen spesiell programvare for å sammenligne filer ved hjelp av Linux, men du trenger å vite hvordan du åpner et terminalvindu.
Som den koblede guiden viser, er det mange måter å åpne et terminalvindu ved hjelp av Linux. Det enkleste er å trykke samtidig på CTRL, ALT og T.
Opprette filene som skal sammenlignes
For å følge med denne veiledningen opprett en fil som heter "file1" og skriv inn følgende tekst:
10 grønne flasker står på veggen
10 grønne flasker står på veggen
Hvis en grønn flaske ved et uhell skulle falle
Det ville være 9 grønne flasker som står på veggen
Du kan opprette en fil ved å følge disse instruksjonene:
-
Åpne filen ved å skrive følgende kommando: nano file1
-
Skriv inn teksten i nano-editoren
-
Trykk CTRL og O for å lagre filen
-
Trykk CTRL og X for å gå ut av filen
Opprett nå en annen fil kalt "file2" og skriv inn følgende tekst:
10 grønne flasker står på veggen
Hvis 1 grønn flaske skulle falle ved et uhell
Det ville være 9 grønne flasker som står på veggen
Du kan opprette en fil ved å følge disse instruksjonene:
-
Åpne filen ved å skrive følgende kommando: nano file2
-
Skriv inn teksten i nano-editoren
-
Trykk CTRL og O for å lagre filen
-
Trykk CTRL og X for å gå ut av filen
Slik sammenligner du to filer ved hjelp av Linux
Kommandoen som brukes i Linux for å vise forskjellene mellom 2 filer kalles diff-kommandoen.
Den enkleste form for diff-kommandoen er som følger:
diff file1 file2
Hvis filene er de samme, blir det ingen utgang når du bruker denne kommandoen, men da det er forskjeller, ser du utdata som ligner på følgende:
2,4c2,3
<10 grønne flasker står på veggen
<Hvis en grønn flaske ved et uhell skulle falle
<Det ville være 9 grønne flasker som står på veggen
…
> Hvis en grønn flaske skulle falle ved et uhell
> Det ville være 9 grønne flasker som står på veggen
I utgangspunktet kan utgangen virke forvirrende, men når du forstår terminologien, er det ganske logisk.
Ved å bruke egne øyne kan du se at forskjellene mellom de to filene er som følger:
- Den andre filen har bare tre linjer, mens den første filen har 4.
- Den andre filen sier "1 grønn flaske" på den tredje linjen, mens den første filen sier "en grønn flaske"
- Den andre filen sier "det ville" i stedet for "det ville" på den endelige linjen
Utgangen fra diff-kommandoen viser at mellom linjene 2 og 4 i den første filen og linjene 2 og 3 i den andre filen er det forskjeller.
Det lister deretter linjene fra 2 til 4 fra den første filen etterfulgt av de 2 forskjellige linjene i den andre filen.
Hvordan bare vise hvis filene er forskjellige
Hvis du bare vil vite om filene er forskjellige og du ikke er interessert i hvilke linjer som er forskjellige, kan du kjøre følgende kommando:
diff -q file1 file2
Hvis filene er forskjellige, vises følgende:
Filer fil1 og fil2 er forskjellige
Hvis filene er de samme, vises ingenting.
Slik viser du en melding hvis filene er de samme
Når du kjører en kommando, vil du vite at den har fungert riktig, så du vil at en melding skal vises når du kjører diff-kommandoen, uavhengig av om filene er like eller forskjellige
For å oppnå dette kravet bruker diff kommandoen, kan du bruke følgende kommando :.
diff-s file1 file2
Nå hvis filene er de samme, får du følgende melding:
Filer fil1 og fil2 er identiske
Slik produserer du forskjellene ved siden av
Hvis det er mange forskjeller, kan det veldig fort bli forvirrende om hva forskjellene faktisk er mellom de to filene.
Du kan endre utgangen av diff-kommandoen, slik at resultatene vises side ved side. For å gjøre dette, kjør følgende kommando:
diff -y file1 file2
Utgangen for filen bruker | symbol for å vise forskjell mellom de to linjene, en <for å vise en linje som er fjernet og a> for å vise en linje som er lagt til.
Interessant hvis du kjører kommandoen ved hjelp av våre demonstrasjonsfiler, vil alle linjene vise forskjellig med unntak av den siste linjen i fil 2 som vil bli vist som blitt slettet.
Begrensning av kolonnebredder
Når man sammenligner to filer ved siden av hverandre, kan det være vanskelig å lese om filene har mange tekstkolonner.
For å begrense et antall kolonner, bruk følgende kommando:
Slik ignorerer du sakforskjeller når du sammenligner filer
Hvis du vil sammenligne to filer, men du bryr deg ikke om hvorvidt bokstavene er de samme mellom de to filene, så kan du bruke følgende kommando:
Slik ignorerer du bakre hvitt plass på slutten av en linje
Hvis du sammenligner filene du legger merke til, er mange forskjeller og forskjellene er forårsaket av hvitt mellomrom på slutten av linjene, kan du utelate disse som dukker opp som endringer ved å kjøre følgende kommando:
Slik ignorerer du alle hvite romforskjeller mellom to filer
Hvis du bare er interessert i teksten i en fil, og du bryr deg ikke om det er flere mellomrom i det ene enn det andre, kan du bruke følgende kommando:
Slik ignorerer du tomme linjer når du sammenligner to filer
Hvis du ikke bryr deg om at en fil kan ha ekstra tomme linjer i det, kan du sammenligne filene ved å bruke følgende kommando:
Sammendrag
Du kan finne mer informasjon ved å lese håndboken for diff-kommandoen.
mann diff
Diff kommandoen kan brukes i sin enkleste form for å bare vise forskjellene mellom 2 filer, men du kan også bruke den til å lage en diff-fil som en del av en patching strategi som vist i denne veiledningen til Linux patch kommandoen.
En annen kommando du kan bruke til å sammenligne filer, er cmp-kommandoen som vist i denne veiledningen. Dette sammenligner filer byte med byte.