In de wereld van Linux is het beheren en vergelijken van bestanden een veel voorkomende taak voor zowel systeembeheerders als ontwikkelaars. De mogelijkheid om bestanden regel voor regel te vergelijken is cruciaal voor het identificeren van verschillen, het debuggen van code en het waarborgen van de integriteit van gegevens. Een krachtig hulpmiddel dat dit proces vergemakkelijkt, is dediff>
commando. In dit artikel zullen we onderzoeken hoe u dediff>
commando om bestanden regel voor regel te vergelijken in Linux.
Inhoudsopgave
- Basissyntaxis van diff-opdracht
- Opties Beschikbaar in diff Commando
- Praktische implementatie van Hoe bestanden regel voor regel vergelijken in Linux? :
- Twee bestanden vergelijken
- Een regel in bestanden verwijderen met de opdracht diff
- Verschillen bekijken in de contextmodus
- Verschillen bekijken in de uniforme modus
- Hoofdletterongevoelig vergelijken tussen bestanden
- Verschil-versie weergeven
Het diff-commando begrijpen
diff staat voor verschil .Dediff>
command is een veelzijdig hulpprogramma dat vooraf is geïnstalleerd op de meeste Linux-distributies. Het primaire doel is om de inhoud van twee bestanden te vergelijken en de verschillen daartussen weer te geven. De opdracht biedt een uitgebreide manier om wijzigingen, toevoegingen en verwijderingen in een duidelijk en leesbaar formaat te markeren.
Deze opdracht wordt gebruikt om de verschillen in de bestanden weer te geven door de bestanden regel voor regel te vergelijken. In tegenstelling tot zijn medeleden, cmp En comm , vertelt het ons welke regels in één bestand moeten worden gewijzigd om de twee bestanden identiek te maken.
Het belangrijkste om te onthouden is dat verschil gebruikt bepaalde speciale symbolen En instructies die nodig zijn om twee bestanden identiek te maken. Het vertelt u de instructies over hoe u het eerste bestand kunt wijzigen, zodat het overeenkomt met het tweede bestand.
Basissyntaxis van diff-opdracht
De basissyntaxis van dediff>
opdracht is als volgt:
diff [OPTION]... FILE1 FILE2>
Hier, ' FILE1`>
en ` FILE2`>
zijn de twee bestanden die u wilt vergelijken.
De ` OPTION`>
Met flag kunt u het gedrag van de ` diff`>
commando.
Opties Beschikbaar in diff Commando
Keuze doe while loop java | Beschrijving |
---|---|
| Uitvoerverschillen in contextmodus |
| Uitvoerverschillen in uniforme modus (beknopter) |
| Voer een hoofdletterongevoelige vergelijking uit |
–negeer-alle-spatie | Negeer witruimte bij het vergelijken van lijnen |
-kort | Voer alleen uit of bestanden verschillen, geen details |
–recursief | Vergelijk mappen recursief |
lente kader | Geef de uitvoer naast elkaar weer |
Praktische implementatie van Hoe bestanden regel voor regel vergelijken in Linux? :
Twee bestanden vergelijken
Vergelijk bestanden regel voor regel in Linux.
Laten we zeggen dat we twee bestanden met namen hebben a.txt En b.txt met 5 Indiase staten.
cat a.txt cat b.txt>

inhoud van bestanden weergeven met behulp van de cat-opdracht
Als we nu het diff-commando toepassen zonder enige optie, krijgen we de volgende uitvoer:
diff a.txt b.txt>

bestand regel voor regel vergelijken in Linux
Laten we eens kijken wat deze uitvoer betekent. De eerste regel van de verschil uitvoer zal bevatten:
- Regelnummers die overeenkomen met het eerste bestand,
- Een speciaal symbool en
- Regelnummers die overeenkomen met het tweede bestand.
Zoals in ons geval, 0a1 wat betekent na regels 0 (helemaal aan het begin van het bestand) die u moet toevoegen Tamil Nadu om overeen te komen met het tweede bestandsregelnummer 1. Vervolgens wordt ons verteld wat die regels in elk bestand zijn, voorafgegaan door het symbool:
- Regels voorafgegaan door een < zijn regels uit het eerste bestand.
- Regels voorafgegaan door > zijn regels uit het tweede bestand.
- Volgende regel bevat 2,3c3 wat betekent dat van regel 2 naar regel 3 in het eerste bestand moet worden gewijzigd om overeen te komen met regelnummer 3 in het tweede bestand. Vervolgens vertelt het ons die regels met de bovenstaande symbolen.
- De drie streepjes (—) scheid gewoon de regels van bestand 1 en bestand 2.
Als samenvatting om beide bestanden identiek te maken, voegt u eerst toe Tamil Nadu in het eerste bestand helemaal aan het begin om overeen te komen met regel 1 van het tweede bestand, daarna verander je regel 2 en 3 van het eerste bestand, d.w.z. Uttar Pradesh En Calcutta met regel 3 van het tweede bestand, d.w.z. Andhra Pradesh . Wijzig daarna regel 5 van het eerste bestand, d.w.z. Jammu en Kasjmir met regel 5 van het tweede bestand, d.w.z. Uttar Pradesh .
Een regel in bestanden verwijderen met de opdracht diff
Denk eens aan het scenario waarbijdiff>
geeft aan dat een regel moet worden verwijderd. Gegeven twee bestanden,a.txt>
Enb.txt>
:

inhoud van bestanden weergeven met behulp van de cat-opdracht
diff a.txt b.txt>

Een regel in een bestand verwijderen
Hier boven uitvoer 3d2 betekent verwijder regel 3e van het eerste bestand, d.w.z. Telangana zodat beide bestanden synchroniseren op lijn 2.
Verschillen bekijken in de contextmodus
Om verschillen in de contextmodus te bekijken, gebruikt u de -C keuze. Laten we proberen dit met een voorbeeld te begrijpen, we hebben twee bestanden bestand1.txt En bestand2.txt :

inhoud van bestanden weergeven met behulp van de cat-opdracht
diff -c file1.txt file2.txt>

Verschil bekijken in contextmodus
In de bovenstaande uitvoer:
- Het eerste bestand wordt aangegeven met `
***`>
, en het tweede bestand wordt aangegeven met `---`>
. - De regel met `
***************`>
dient als afscheider. - De eerste twee regels geven informatie over bestand 1 en bestand 2, waarbij de bestandsnaam, wijzigingsdatum en wijzigingstijd worden weergegeven.
- Daarna drie sterretjes `
***`>
worden gevolgd door een regelbereik uit het eerste bestand (regels 1 tot en met 4). Vier sterretjes `****`>
kom als volgende. De inhoud van het eerste bestand wordt vervolgens weergegeven met specifieke indicatoren:- Als een regel ongewijzigd is, wordt deze voorafgegaan door twee spaties.
- Als een regel moet worden gewijzigd, wordt deze voorafgegaan door een symbool en een spatie. De symbolen geven aan:
-
`+`>
: Een regel in het tweede bestand die aan het eerste bestand moet worden toegevoegd voor identieke resultaten. -
`-`>
: Een regel in het eerste bestand dat moet worden verwijderd voor identieke resultaten.
-
- Drie streepjes `
---`>
worden gevolgd door een regelbereik uit het tweede bestand (regels 1 tot en met 4), gescheiden door een komma. Vier streepjes `----`>
volgen en de inhoud van het tweede bestand wordt weergegeven.
Verschillen bekijken in de uniforme modus
Om de verschillen in de uniforme modus te bekijken, gebruikt u de -in keuze. Het is vergelijkbaar met de contextmodus, maar het geeft geen overbodige informatie weer of het toont de informatie in beknopte vorm.

inhoud van bestanden weergeven met behulp van de cat-opdracht
diff -u file1.txt file2.txt>

Weergaveverschil in Unified-modus
In de bovenstaande uitvoer:
- Het eerste bestand wordt aangegeven met `
---`>
, en het tweede bestand wordt aangegeven met `+++`>
. - De eerste twee regels geven informatie over bestand 1 en bestand 2, inclusief de wijzigingsdatum en -tijd.
- Daarna '
@@ -1>
`,`>
4 +1`>
,`>
4 @@`>
geeft het lijnbereik voor beide bestanden aan. In dit geval vertegenwoordigt het de regels 1 tot en met 4 in beide bestanden. - De volgende regels vertegenwoordigen de inhoud van de bestanden met specifieke indicatoren:
- Ongewijzigde regels worden zonder voorvoegsel weergegeven.
- Regels in het eerste bestand dat moet worden verwijderd, worden voorafgegaan door
->
. - Regels in het tweede bestand dat moet worden toegevoegd, worden voorafgegaan door
+>
.
In dit voorbeeld geeft de uitvoer aan dat om beide bestanden identiek te maken, de regels met mv en comm uit het eerste bestand moeten worden verwijderd (file1.txt>
), en de regels met diff en comm moeten eraan worden toegevoegd.
Hoofdletterongevoelig vergelijken tussen bestanden
Standaard is ' diff`>
is hoofdlettergevoelig. Om een hoofdletterongevoelige vergelijking uit te voeren, gebruikt u de ` -i`>
keuze:

inhoud van bestanden weergeven met behulp van de cat-opdracht
Dediff>
commando wordt vervolgens gebruikt om deze bestanden te vergelijken met de-i>
optie, waardoor de vergelijking hoofdletterongevoelig is.
diff -i file1.txt file2.txt>

Hoofdletterongevoelig vergelijken
2d1>
: Dit geeft een wijziging aan in regel 2 van het eerste bestand (file1.txt>
). Ded>
staat voor verwijderen en er staat dat regel 2 uit het eerste bestand moet worden verwijderd.>
: deze regel geeft de inhoud aan van de regel die moet worden verwijderd. In dit geval is het mv.
3a3>
: Dit duidt op een toevoeging in regel 3 van het eerste bestand (file1.txt>
). Dea>
staat voor add, en er staat dat je een regel moet toevoegen op positie 3.>verschil>
: Deze regel vertegenwoordigt de inhoud die moet worden toegevoegd. In dit geval is het div.
Samenvattend vertelt de uitvoer ons dat om beide bestanden identiek te maken (hoofdletter- en kleine letters genegeerd), we de regel met mv uit het eerste bestand moeten verwijderen (file1.txt>
) en voeg de lijndiff op dezelfde positie toe. Dediff>
commando, met de-i>
optie maakt een niet-hoofdlettergevoelige vergelijking mogelijk, waardoor mv en MV tijdens de analyse als hetzelfde worden beschouwd.
Weergavediff>
Versie
Om de versie van ` diff`>
op uw systeem geïnstalleerd, gebruik dan de ` --version`>
keuze:
diff --version>

Versie van diff-opdracht weergeven
Deze opdracht biedt informatie over de versie, licenties en auteurs van het ` diff`>
nutsvoorziening.
Veelgestelde vragen over diff Command – Veelgestelde vragen
Hoe gebruik ik dediff>
commando om twee bestanden regel voor regel te vergelijken in Linux?
Om twee bestanden regel voor regel te vergelijken met behulp van de
diff>
opdracht, gebruikt u eenvoudigweg de volgende syntaxis:diff file1.txt file2.txt>Met deze opdracht worden de verschillen tussen de twee bestanden weergegeven, waarbij toevoegingen, verwijderingen en wijzigingen worden benadrukt.
Kan ik witruimteverschillen negeren tijdens het vergelijken van bestanden met dediff>
commando?
Ja de
diff>
commando biedt de-w>
of--ignore-all-space>
optie om witruimteverschillen te negeren. Bijvoorbeeld:diff -w file1.txt file2.txt>Dit is vooral handig bij het vergelijken van codebestanden waarbij veranderingen in de inspringing of spatiëring niet significant zijn.
eilandletter java
Hoe kan ik een patchbestand maken met behulp van dediff>
commando?
Om een patchbestand te maken dat de verschillen tussen twee bestanden weergeeft, gebruikt u de
-u>
optie en stuur de uitvoer door naar een bestand:diff -u file1.txt file2.txt>mijnpatch.patch>Het gegenereerde patchbestand kan later worden toegepast om een ander bestand met de wijzigingen te synchroniseren.
Wat is het uniforme formaatdiff>
uitvoer, en hoe verschilt dit van het contextformaat?
Het uniforme formaat (`
-u`>
optie) in `diff`>
uitvoer biedt een beknoptere en leesbare weergave van verschillen vergeleken met het contextformaat (`-c`>
keuze). Het geeft wijzigingen in een compactere vorm weer, waardoor het gemakkelijker wordt om wijzigingen tussen bestanden te begrijpen.
Hoe vergelijk ik recursief twee mappen in Linux met behulp van dediff>
commando?
Om recursief twee mappen en hun inhoud te vergelijken, gebruikt u de `
-r`>
of '--recursive`>
optie met dediff>
commando:diff -r directory1/ directory2/>Deze opdracht vergelijkt alle bestanden in de opgegeven mappen en biedt gedetailleerde informatie over de verschillen.
Conclusie
In de Linux-wereld is het vergelijken van bestanden een veel voorkomende taak voor systeembeheerders en ontwikkelaars. De ` diff>
command is een handig hulpmiddel dat helpt bij dit proces. In dit artikel wordt onderzocht hoe u ` diff`>
om bestanden regel voor regel te vergelijken in Linux. Het behandelt de basissyntaxis, belangrijke opties zoals de contextmodus en de uniforme modus, en praktische toepassingen zoals het maken van patchbestanden en het recursief vergelijken van mappen. Of u nu code debugt of de integriteit van bestanden waarborgt, het begrijpen en beheersen van de ` diff`>
commando is essentieel voor efficiënt bestandsbeheer in Linux.