Android

Diff kommando i Linux

Linux команда diff - команда сравнения текстовых файлов.

Linux команда diff - команда сравнения текстовых файлов.

Innholdsfortegnelse:

Anonim

diff er et kommandolinjeverktøy som lar deg sammenligne to filer linje for linje. Den kan også sammenligne innholdet i kataloger.

diff kommandoen er ofte brukt for å lage en oppdatering som inneholder forskjellene mellom en eller flere filer som kan brukes ved å bruke patch kommandoen.

Hvordan bruke diff kommandoen

Syntaks for diff kommandoen er som følger:

diff… FILES

diff kommandoen kan vise utdataene i flere formater med normal, kontekst og enhetlig format som det vanligste. Utdataene inneholder informasjon om hvilke linjer i filene som må endres slik at de blir identiske. Hvis filene samsvarer, produseres ingen utdata.

Hvis du vil lagre kommandoutdataene i en fil, bruker du viderekoblingsoperatøren:

diff file1 file2 > patch

, bruker vi følgende to filer for å forklare hvordan diff kommandoen fungerer:

fil1

Ubuntu Arch Linux Debian CentOS Fedora fil2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

Normalt format

I sin enkleste form når diff kommandoen kjøres på to tekstfiler uten noe alternativ, produserer den en utgang i normalt format:

diff file1 file2

Utgangen vil se slik ut:

0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos

Det normale outputformatet består av en eller flere seksjoner som beskriver forskjellene. Hver seksjon ser slik ut:

change-command < from-file-line… --- > to-file-line…

0a1 , 2d2 og 4c4, 5 er endringskommandoer. Hver endringskommando inneholder følgende, fra venstre til høyre:

  • Linjenummer eller rekke linjer i den første filen. Et spesielt endringstegn. Linjenummeret eller linjeavstanden i den andre filen.

Endringstegnet kan være ett av følgende:

  • a - Legg til linjene. c - Endre linjene. d - Slett linjene.

Endringskommandoen følges av de komplette linjene som blir fjernet ( < ) og lagt til filen ( > ).

La oss forklare resultatet:

  • 0a1 - Legg til linje 1 i den andre filen i begynnelsen av filen1 (etter linjen 0 ).
    • > Kubuntu - Linjen fra den andre linjen som er lagt til den første filen som beskrevet ovenfor.
    2d2 - Slett linje 2 i den første filen. 2 etter d symbolet betyr at hvis linjen ikke blir slettet, vil den vises på linje 2 i den andre filen.
    • < Arch Linux - den slettede linjen.
    4c4, 5 - Erstatt (endre) linje 5 i den første filen med linjer 4-5 fra den andre filen.
    • < CentOS - Linjen i den første filen som skal erstattes. --- - Separator. > Arch Linux og > Centos - Linjer fra den andre filen som erstatter linjen i den første filen.

Kontekstformat

Når kontekstutgangsformatet brukes, viser diff kommandoen flere kontekstlinjer rundt linjene som er forskjellige mellom filene.

Alternativet -c forteller diff å produsere output i kontekstformatet:

diff -c file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 6 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 7 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

Utdataene starter med navnene og tidsstemplene hvis filene som blir sammenlignet, og en eller flere seksjoner som beskriver forskjellene. Hver seksjon ser slik ut:

*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…

  • from-file-line-numbers og to-file-line-numbers - Linjenumrene eller komma-separerte rekke linjer i henholdsvis den første og den andre filen. from-file-line og to-file-line - Linjene som er forskjellige og kontekstlinjer:
    • Linjer som begynner med to mellomrom er kontekstlinjer, linjene som er de samme i begge filene. Linjer som begynner med minus-symbolet ( - ) er linjene som tilsvarer ingenting i den andre filen. Linjer som mangler i den andre filen. Linjer som begynner med plussymbolet ( + ) er linjene som tilsvarer ingenting i den første filen. Linjer som mangler i den første filen. Linjer som begynner med utropstegnet ( ! ) Er linjene som er endret mellom to filer. Hver gruppe av linjer starter med ! fra den første filen har en tilsvarende kamp i den andre filen.

La oss forklare de viktigste delene av produksjonen:

  • I dette eksemplet har vi bare ett avsnitt som beskriver forskjellene. *** 1, 6 **** og --- 1, 7 ---- forteller oss omfanget av linjene fra den første og andre fil som er inkludert i denne delen. Linjer Ubuntu , Debian , Fedora og siste tomme linje er de samme i begge filene. Disse linjene begynner med dobbelt mellomrom. Linje - Arch Linux fra den første filen tilsvarer ingenting i den andre filen. Selv om denne linjen også eksisterer i den andre filen, er posisjonene forskjellige.Line + Kubuntu fra den andre filen tilsvarer ingenting i den første filen ! CentOS Linje ! CentOS ! CentOS fra den første filen og linjene ! Arch Linux ! Arch Linux og ! CentOS ! CentOS fra den andre filen endres mellom filene.

Som standard er antall kontekstlinjer standard til tre. Hvis du vil spesifisere et annet nummer, bruk alternativet -C ( --contexts ):

diff -C 1 file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 5 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 6 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

Unified Format

Det enhetlige outputformatet er en forbedret versjon av kontekstformatet og gir en mindre utgang.

Bruk alternativet -u for å fortelle diff å skrive ut utdataene i det enhetlige formatet:

diff -u file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian -CentOS +Arch Linux +Centos Fedora

Utgangen begynner med navnene og tidsstemplene til filene og en eller flere seksjoner som beskriver forskjellene. Hver seksjon har følgende skjema:

*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…

  • @@ from-file-line-numbers to-file-line-numbers @@ - @@ from-file-line-numbers to-file-line-numbers @@ eller rekkevidden for linjene fra den første og andre fil som er inkludert i denne delen. line-from-files - Linjene som er forskjellige og kontekstlinjer:
    • Linjer som begynner med to mellomrom er kontekstlinjer, linjene som er de samme i begge filene. Linjer som begynner med minussymbolet ( - ) er linjene som blir fjernet fra den første filen. Linjer som begynner med plussymbolet ( + ) er linjene som er lagt til fra den første filen.

Ignorer saken

Som du kanskje vil merke i eksemplene ovenfor, er diff kommandoen som standard store og små bokstaver.

Bruk alternativet -i for å fortelle diff til ignorerer tilfelle:

diff -ui file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian +Arch Linux CentOS Fedora

Konklusjon

Sammenligning av tekstfiler for forskjeller er en av de vanligste oppgavene for Linux-systemadministratorer.

diff kommandoen sammenligner filer linje for linje. For mer informasjon, skriv man diff i terminalen din.

diff terminal