Linux diff command summary with examples
Inhoudsopgave:
- Hoe het
diffcommando te gebruiken - Normaal formaat
- Contextindeling
- Uniforme indeling
- Negeer zaak
- Conclusie
diff
is een opdrachtregelprogramma waarmee u twee bestanden regel voor regel kunt vergelijken. Het kan ook de inhoud van mappen vergelijken.
Het
diff
commando wordt meestal gebruikt om een patch te maken met de verschillen tussen een of meer bestanden die kunnen worden toegepast met het
patch
commando.
Hoe het
diff
commando te gebruiken
De syntaxis voor het
diff
commando is als volgt:
diff… FILES
Met het
diff
commando kan de uitvoer in verschillende formaten worden weergegeven, waarbij de normale, context- en uniforme indeling de meest voorkomende is. De uitvoer bevat informatie over welke regels in de bestanden moeten worden gewijzigd zodat ze identiek worden. Als de bestanden overeenkomen, wordt er geen uitvoer geproduceerd.
Gebruik de omleidingsoperator om de opdrachtuitvoer in een bestand op te slaan:
diff file1 file2 > patch
, zullen we de volgende twee bestanden gebruiken om uit te leggen hoe de opdracht
diff
werkt:
Ubuntu Arch Linux Debian CentOS Fedora
bestand2
Kubuntu Ubuntu Debian Arch Linux Centos Fedora
Normaal formaat
In de eenvoudigste vorm wanneer het
diff
commando zonder twee opties op twee tekstbestanden wordt uitgevoerd, produceert het een uitvoer in het normale formaat:
diff file1 file2
De uitvoer ziet er ongeveer zo uit:
0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos
Het normale uitvoerformaat bestaat uit een of meer secties die de verschillen beschrijven. Elke sectie ziet er zo uit:
change-command < from-file-line… --- > to-file-line…
0a1
,
2d2
en
4c4, 5
zijn wijzigingscommando's. Elk wijzigingscommando bevat het volgende, van links naar rechts:
- Het regelnummer of het aantal regels in het eerste bestand. Een speciaal wijzigingsteken. Het regelnummer of het aantal regels in het tweede bestand.
Het wijzigingsteken kan een van de volgende zijn:
-
a- Voeg de lijnen toe.c- Wijzig de lijnen.d- Verwijder de lijnen.
De opdracht wijzigen wordt gevolgd door de volledige regels die worden verwijderd (
<
) en toegevoegd aan het bestand (
>
).
Laten we de output uitleggen:
-
0a1- Voeg regel1van het tweede bestand toe aan het begin van bestand1 (na regel0).-
> Kubuntu- De regel van de tweede regel die wordt toegevoegd aan het eerste bestand zoals hierboven beschreven.
2d2- Verwijder regel2in het eerste bestand. De2achter het symbooldbetekent dat als de regel niet wordt verwijderd, deze op regel2in het tweede bestand verschijnt.-
< Arch Linux- de verwijderde regel.
4c4, 5- Vervang (verander) regel5in het eerste bestand door regels4-5uit het tweede bestand.-
< CentOS- De regel in het eerste bestand dat moet worden vervangen.---- Separator.> Arch Linuxen> Centos- Lijnen uit het tweede bestand die de lijn in het eerste bestand vervangen.
-
Contextindeling
Wanneer het contextuitvoerformaat wordt gebruikt, geeft de opdracht
diff
verschillende regels context weer rondom de regels die verschillen tussen de bestanden.
De optie
-c
vertelt
diff
om uitvoer te produceren in de contextindeling:
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
De uitvoer begint met de namen en de tijdstempels als de bestanden die worden vergeleken, en een of meer secties die de verschillen beschrijven. Elke sectie ziet er zo uit:
*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…
-
from-file-line-numbersento-file-line-numbers- respectievelijk de regelnummers of door komma's gescheiden regels in het eerste en tweede bestand.from-file-lineento-file-line- De regels die verschillen en de contextregels:- Lijnen die beginnen met twee spaties zijn contextregels, de lijnen die in beide bestanden hetzelfde zijn. Lijnen die met het minteken (
-) beginnen, zijn de lijnen die met niets in het tweede bestand overeenkomen. Lijnen die ontbreken in het tweede bestand. Lijnen die beginnen met het plusteken (+) zijn de lijnen die met niets in het eerste bestand overeenkomen. Lijnen die ontbreken in het eerste bestand. Lijnen die beginnen met het uitroepteken (!) Zijn de lijnen die tussen twee bestanden worden gewijzigd. Elke groep lijnen begint met!uit het eerste bestand heeft een overeenkomstige overeenkomst in het tweede bestand.
- Lijnen die beginnen met twee spaties zijn contextregels, de lijnen die in beide bestanden hetzelfde zijn. Lijnen die met het minteken (
Laten we de belangrijkste delen van de uitvoer toelichten:
- In dit voorbeeld hebben we slechts één sectie die de verschillen beschrijft.
*** 1, 6 ****en--- 1, 7 ----vertelt ons het bereik van de regels van de eerste en tweede bestanden die zijn opgenomen in deze sectie. LijnenUbuntu,Debian,Fedoraen de laatste lege regel is hetzelfde in beide bestanden. Deze regels beginnen met dubbele spatie. Lijn- Arch Linuxuit het eerste bestand komt met niets in het tweede bestand overeen. Hoewel deze regel ook voorkomt in het tweede bestand, verschillen de posities. Line+ Kubuntuvan het tweede bestand komt met niets in het eerste bestand overeen. Line! CentOS! CentOSvan het eerste bestand en lijnen! Arch Linux! Arch Linuxen! CentOS! CentOSuit het tweede bestand worden tussen de bestanden gewijzigd.
Standaard is het aantal contextregels standaard drie. Gebruik de optie
-C
(
--contexts
) om een ander nummer op te geven:
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
Uniforme indeling
Het uniforme uitvoerformaat is een verbeterde versie van het contextformaat en produceert een kleinere uitvoer.
Gebruik de optie
-u
om
diff
te laten weten dat de uitvoer in het uniforme formaat moet worden afgedrukt:
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
De uitvoer begint met de namen en de tijdstempels van de bestanden en een of meer secties die de verschillen beschrijven. Elke sectie heeft de volgende vorm:
*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…
-
@@ from-file-line-numbers to-file-line-numbers @@- Het regelnummer of bereik van de regels van de eerste en tweede bestanden in deze sectie.line-from-files- De regels die verschillen en de contextregels:- Lijnen die beginnen met twee spaties zijn contextregels, de lijnen die hetzelfde zijn in beide bestanden. Lijnen die beginnen met het minteken (
-) zijn de lijnen die worden verwijderd uit het eerste bestand. Lijnen die beginnen met het plusteken (+) zijn de regels die worden toegevoegd vanuit het eerste bestand.
- Lijnen die beginnen met twee spaties zijn contextregels, de lijnen die hetzelfde zijn in beide bestanden. Lijnen die beginnen met het minteken (
Negeer zaak
Zoals u in de bovenstaande voorbeelden kunt zien, is de opdracht
diff
standaard standaard hoofdlettergevoelig.
Gebruik de optie
-i
om
diff
te vertellen dat het geval moet worden genegeerd:
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
Conclusie
Het vergelijken van tekstbestanden op verschillen is een van de meest voorkomende taken voor Linux-systeembeheerders.
Het
diff
commando vergelijkt bestanden regel voor regel. Typ
man diff
in uw terminal voor meer informatie.
Kunnen dichtknijpen Google OS kan andere smaken van Linux onder druk zetten
Een groot deel van de discussie rond het nieuwe pc-besturingssysteem van Google is gericht op een dreigende strijd met Windows, maar de grootste verliezers kunnen andere Linux-besturingssystemen zijn die met enig gematigd succes op netbooks, industrieanalisten hebben genoten zei.
De verzameling 'Linux Diversity': een pakket, 10 Linux-distro's
Als u op zoek bent naar een nieuw besturingssysteem , deze set geeft je een groot aantal van de nieuwste populaire opties.
Diff-IE add-on voor Internet Explorer helpt u bij het identificeren van wijzigingen op een webpagina
Diff-IE is een prototype Add-on op van Microsoft Research voor Internet Explorer, dat de wijzigingen in een webpagina markeert sinds de laatste keer dat u het bezocht.







