Linux команда diff - команда сравнения текстовых файлов.
Innholdsfortegnelse:
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:
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 linje1i den andre filen i begynnelsen av filen1 (etter linjen0).-
> Kubuntu- Linjen fra den andre linjen som er lagt til den første filen som beskrevet ovenfor.
2d2- Slett linje2i den første filen.2etterdsymbolet betyr at hvis linjen ikke blir slettet, vil den vises på linje2i den andre filen.-
< Arch Linux- den slettede linjen.
4c4, 5- Erstatt (endre) linje5i den første filen med linjer4-5fra den andre filen.-
< CentOS- Linjen i den første filen som skal erstattes.---- Separator.> Arch Linuxog> 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-numbersogto-file-line-numbers- Linjenumrene eller komma-separerte rekke linjer i henholdsvis den første og den andre filen.from-file-lineogto-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.
- Linjer som begynner med to mellomrom er kontekstlinjer, linjene som er de samme i begge filene. Linjer som begynner med minus-symbolet (
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. LinjerUbuntu,Debian,Fedoraog siste tomme linje er de samme i begge filene. Disse linjene begynner med dobbelt mellomrom. Linje- Arch Linuxfra den første filen tilsvarer ingenting i den andre filen. Selv om denne linjen også eksisterer i den andre filen, er posisjonene forskjellige.Line+ Kubuntufra den andre filen tilsvarer ingenting i den første filen! CentOSLinje! CentOS! CentOSfra den første filen og linjene! Arch Linux! Arch Linuxog! CentOS! CentOSfra 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.
- Linjer som begynner med to mellomrom er kontekstlinjer, linjene som er de samme i begge filene. Linjer som begynner med minussymbolet (
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-IE tillegg for Internet Explorer hjelper deg med å identifisere endringer på en nettside
Diff-IE er en prototype Add- på fra Microsoft Research for Internet Explorer, som fremhever endringene på en nettside siden sist du besøkte den.
Chmod-kommando i Linux (filtillatelser)
I Linux administreres tilgang til filene gjennom filtillatelser, attributter og eierskap. Denne opplæringen dekker hvordan du bruker chmod-kommandoen til å endre tilgangstillatelser for filer og kataloger.
Chgrp-kommando i Linux (endre gruppe)
I Linux er hver fil tilknyttet en eier og en gruppe og har tillatelser som bestemmer hvilke brukere som kan lese, skrive eller utføre filen. Chgrpc-kommandoen endrer gruppeeierskap til gitte filer.







