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 linje1
i 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 linje2
i den første filen.2
etterd
symbolet betyr at hvis linjen ikke blir slettet, vil den vises på linje2
i den andre filen.-
< Arch Linux
- den slettede linjen.
4c4, 5
- Erstatt (endre) linje5
i den første filen med linjer4-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
ogto-file-line-numbers
- Linjenumrene eller komma-separerte rekke linjer i henholdsvis den første og den andre filen.from-file-line
ogto-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
,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.
- 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.