Diff • GitHub & Git Foundations
Indholdsfortegnelse:
diff
er et kommandolinjeværktøj, der giver dig mulighed for at sammenligne to filer linje for linje. Det kan også sammenligne indholdet i mapper.
diff
kommandoen bruges oftest til at oprette en patch, der indeholder forskellene mellem en eller flere filer, der kan anvendes ved hjælp af
patch
kommandoen.
Sådan bruges
diff
kommandoen
Syntaks for kommandoen
diff
er som følger:
diff… FILES
diff
kommandoen kan vise output i flere formater, hvor det normale, kontekst og ensformat er det mest almindelige. Outputet indeholder information om hvilke linjer i filerne, der skal ændres, så de bliver identiske. Hvis filerne stemmer overens, produceres der ingen output.
For at gemme kommandoutputet i en fil skal du bruge omdirigeringsoperatøren:
diff file1 file2 > patch
, bruger vi følgende to filer til at 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 køres på to tekstfiler uden nogen mulighed, producerer den en output i det normale format:
diff file1 file2
Outputet ser sådan ud:
0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos
Det normale outputformat består af en eller flere sektioner, der beskriver forskellene. Hver sektion ser sådan ud:
change-command < from-file-line… --- > to-file-line…
0a1
,
2d2
og
4c4, 5
er ændringskommandoer. Hver ændringskommando indeholder følgende fra venstre mod højre:
- Linjenummer eller række af linjer i den første fil. Et specielt ændringstegn. Linjenummeret eller linjeavstanden i den anden fil.
Ændringstegnet kan være et af følgende:
-
a
- Tilføj linjerne.c
- Skift linjer.d
- Slet linjerne.
Ændringskommandoen følges af de komplette linjer, der fjernes (
<
) og tilføjes til filen (
>
).
Lad os forklare output:
-
0a1
- Tilføj linje1
i den anden fil i begyndelsen af filen1 (efter linjen0
).-
> Kubuntu
- Linjen fra den anden linje, der føjes til den første fil som beskrevet ovenfor.
2d2
- Slet linje2
i den første fil.2
efter symboletd
betyder, at hvis linjen ikke slettes, vil den vises på linje2
i den anden fil.-
< Arch Linux
- den slettede linje.
4c4, 5
- Erstat (ændre) linje5
i den første fil med linjer4-5
fra den anden fil.-
< CentOS
- Linjen i den første fil, der skal udskiftes.---
- Separator.> Arch Linux
og> Centos
- Linjer fra den anden fil, der erstatter linjen i den første fil.
-
Kontekstformat
Når kontekstoutputformatet bruges, viser
diff
kommandoen flere kontekstlinjer omkring linjerne, der er forskellige mellem filerne.
Indstillingen
-c
fortæller
diff
at producere 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
Outputet starter med navnene og tidsstemplerne, hvis de filer, der sammenlignes, og en eller flere sektioner, der beskriver forskellene. Hver sektion ser sådan ud:
*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…
-
from-file-line-numbers
ogto-file-line-numbers
- Linjenumrene eller kommasepareret række linjer i henholdsvis den første og den anden fil.from-file-line
ogto-file-line
- De forskellige linjer og kontekstlinier:- Linjer, der starter med to mellemrum, er kontekstlinier, linjerne, der er de samme i begge filer. Linjer, der starter med minussymbolet (
-
), er de linjer, der ikke svarer til noget i den anden fil. Linjer, der mangler i den anden fil. Linjer, der starter med plussymbolet (+
), er de linjer, der ikke svarer til noget i den første fil. Linjer, der mangler i den første fil. Linjer, der begynder med udråbstegn (!
), Er de linjer, der ændres mellem to filer. Hver gruppe af linjer starter med!
fra den første fil har en tilsvarende match i den anden fil.
- Linjer, der starter med to mellemrum, er kontekstlinier, linjerne, der er de samme i begge filer. Linjer, der starter med minussymbolet (
Lad os forklare de vigtigste dele af output:
- I dette eksempel har vi kun et afsnit, der beskriver forskellene.
*** 1, 6 ****
og--- 1, 7 ----
fortæller os række af linjer fra den første og anden fil, der er inkluderet i dette afsnit. LinjerUbuntu
,Debian
,Fedora
og sidste tomme linje er de samme i begge filer. Disse linjer starter med dobbelt mellemrum.Line- Arch Linux
fra den første fil svarer ikke til noget i den anden fil. Selvom denne linje også findes i den anden fil, er positionerne forskellige.Line+ Kubuntu
fra den anden fil svarer ikke til noget i den første fil.Line! CentOS
! CentOS
fra den første fil og linjer! Arch Linux
! Arch Linux
og! CentOS
! CentOS
fra den anden fil ændres mellem filerne.
Som standard er antallet af kontekstlinjer standard til tre. For at specificere et andet nummer skal du bruge indstillingen
-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 samlede outputformat er en forbedret version af kontekstformatet og producerer en mindre output.
Brug indstillingen
-u
til at fortælle
diff
at udskrive output i det samlede format:
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
Outputet begynder med navnene og tidsstemplerne på filerne og en eller flere sektioner, der beskriver forskellene. Hvert afsnit har følgende form:
*************** @@ 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 rækkevidden af linjerne fra den første og anden fil inkluderet i dette afsnit.line-from-files
- Linjerne, der er forskellige og kontekstlinier:- Linjer, der starter med to mellemrum, er kontekstlinier, linjerne, der er de samme i begge filer. Linjer, der starter med minussymbolet (
-
), er linjerne, der fjernes fra den første fil. Linjer, der starter med plussymbolet (+
), er linjerne, der er tilføjet fra den første fil.
- Linjer, der starter med to mellemrum, er kontekstlinier, linjerne, der er de samme i begge filer. Linjer, der starter med minussymbolet (
Ignorer sagen
Som du måske bemærker i ovenstående eksempler, er
diff
kommandoen som standard store og små bogstaver.
Brug indstillingen
-i
til at fortælle
diff
til ignoreret sag:
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
Konklusion
Sammenligning af tekstfiler for forskelle er en af de mest almindelige opgaver for Linux-systemadministratorer.
diff
kommandoen sammenligner filer linje for linje. For mere information, skriv
man diff
i din terminal.
Diff-IE Tilføjelse til Internet Explorer hjælper dig med at identificere ændringer på en webside

Diff-IE er en prototype Add- på fra Microsoft Research for Internet Explorer, der fremhæver ændringerne på en webside siden sidste gang du besøgte den.
Chmod-kommando i linux (filtilladelser)

I Linux administreres adgang til filerne gennem filtilladelser, attributter og ejerskab. Denne tutorial dækker hvordan man bruger chmod-kommandoen til at ændre adgangstilladelser for filer og mapper.
Chgrp-kommando i linux (skift gruppe)

I Linux er hver fil tilknyttet en ejer og en gruppe og har tilladelser, der bestemmer, hvilke brugere der kan læse, skrive eller udføre filen. Kommandoen chgrpc ændrer gruppeejerskabet for givne filer.