Wat te weten
- Voer om te vergelijken uit: diff bestand1 bestand2
- Laat zien hoe ze verschillen met: diff -q bestand1 bestand2
- Laat zien hoe ze hetzelfde zijn met: diff -s bestand1 bestand2
Dit artikel legt uit hoe je Linux kunt gebruiken om twee bestanden te vergelijken en de verschillen tussen de bestanden op het scherm of een bestand uit te voeren. Je installeert geen speciale software om bestanden te vergelijken met Linux, maar je moet wel weten hoe je een terminalvenster opent.
Maak de bestanden om te vergelijken
Als u deze handleiding wilt volgen, maakt u twee tekstbestanden die vergelijkbare maar verschillende tekst bevatten.
Maak het eerste bestand
Maak een bestand met de naam bestand1 en voer dan de volgende tekst in: 10 groene flessen staan op een muur
10 groene flessen staan op een muur
Als een groene fles per ongeluk zou vallen
Er zouden 9 groene flessen aan de muur staan
Volg deze instructies om dit bestand te maken:
-
Open het bestand door de volgende opdracht te typen: nano file1
De snelste manier om een terminalvenster in Linux te openen, is door op de CTRL+ALT+T toetsen tegelijk.
-
Typ de tekst in de nano-editor.
-
druk op CTRL+O om het bestand op te slaan.
-
druk op CTRL+X om het bestand te verlaten.
Maak het tweede bestand
Maak vervolgens een ander bestand met de naam bestand2 en voer de volgende tekst in: 10 groene flessen die op een muur staan
Als er per ongeluk 1 groene fles valt
Er zouden 9 groene flessen aan de muur staan
Volg deze instructies om dit bestand te maken:
-
Open het bestand door de volgende opdracht te typen: nano file2
-
Typ de tekst in de nano-editor.
-
druk op CTRL+O om het bestand op te slaan.
-
druk op CTRL+X om het bestand te verlaten.
Hoe twee bestanden te vergelijken met Linux
Het commando dat in Linux wordt gebruikt om de verschillen tussen twee bestanden te laten zien, wordt het diff-commando genoemd. De eenvoudigste vorm van het diff-commando is als volgt: diff file1 file2
Als de bestanden hetzelfde zijn, wordt er geen uitvoer weergegeven bij gebruik van deze opdracht. Omdat er echter verschillen zijn, is de uitvoer vergelijkbaar met het volgende: 2,4c2,3
< 10 groene flessen die op de muur staan
< Als een groene fles per ongeluk zou vallen
< Er zouden 9 groene flessen aan de muur staan
…
> Als er per ongeluk 1 groene fles valt
> Er zouden 9 groene flessen aan de muur staan
Aanvankelijk lijkt de uitvoer verwarrend, maar als je de terminologie eenmaal begrijpt, is het redelijk logisch.
De verschillen tussen de twee bestanden zijn als volgt:
- Het tweede bestand heeft slechts drie regels. Het eerste bestand heeft er vier.
- Het tweede bestand zegt 1 groene fles op de derde regel. Het eerste bestand zegt een groene fles.
- Het tweede bestand zegt het Rode in plaats van er zou op de laatste regel.
De uitvoer van het diff-commando laat zien dat er tussen regel twee en vier van het eerste bestand en regel twee en drie van het tweede bestand verschillen zijn. Vervolgens worden de regels van twee tot vier uit het eerste bestand weergegeven, gevolgd door de twee verschillende regels in het tweede bestand.
Alleen weergeven als de bestanden anders zijn
Als je alleen wilt weten of de bestanden anders zijn en je bent niet geïnteresseerd in welke regels anders zijn, voer je het volgende commando uit: diff -q file1 file2
Als de bestanden verschillend zijn, wordt het volgende weergegeven: Bestanden bestand1 en bestand2 verschillen
Als de bestanden hetzelfde zijn, wordt er niets weergegeven.
Een bericht weergeven als de bestanden hetzelfde zijn
Wanneer u een opdracht uitvoert, wilt u misschien weten of deze correct werkte. U wilt dat er een bericht wordt weergegeven wanneer u de opdracht diff uitvoert, ongeacht of de bestanden hetzelfde of verschillend zijn. Om aan deze vereiste te voldoen met de opdracht diff, gebruikt u de volgende opdracht: diff -s file1 file2
Als de bestanden hetzelfde zijn, verschijnt dit bericht: Bestanden bestand1 en bestand2 zijn identiek
Hoe de verschillen naast elkaar te produceren?
Als er meerdere verschillen zijn, kan het verwarrend zijn wat de verschillen zijn tussen de twee bestanden. U kunt de uitvoer van het diff-commando wijzigen zodat de resultaten naast elkaar worden weergegeven. Voer hiervoor de volgende opdracht uit: diff -y file1 file2
De uitvoer voor het bestand gebruikt de | symbool om een verschil tussen de twee lijnen aan te geven, a < om een regel weer te geven die is verwijderd, en a > om een toegevoegde regel weer te geven.
Wanneer u de opdracht uitvoert met behulp van de demonstratiebestanden in dit artikel, worden alle regels als verschillend weergegeven, behalve de laatste regel van bestand2, die wordt weergegeven als verwijderd.
Kolombreedte beperken
Als u twee bestanden naast elkaar vergelijkt, kan het moeilijk zijn om te lezen als de bestanden meerdere tekstkolommen hebben. Gebruik de volgende opdracht om het aantal kolommen te beperken: diff –width=5 file1 file2
Hoe u verschillen in hoofdletters kunt negeren bij het vergelijken van bestanden
Als u twee bestanden wilt vergelijken, maar het maakt u niet uit of de hoofdletters van de twee bestanden hetzelfde zijn, gebruik dan het volgende commando: diff -i bestand1 bestand2
Hoe u achterblijvende witruimte aan het einde van een regel negeert?
Als u veel verschillen opmerkt bij het vergelijken van bestanden en de verschillen worden veroorzaakt door witruimte aan het einde van de regels, voorkom dan dat deze als wijzigingen worden weergegeven door het volgende commando uit te voeren: diff -Z file1 file2
Hoe alle verschillen in witruimte tussen twee bestanden te negeren
Als je alleen geïnteresseerd bent in de tekst in een bestand en het maakt je niet uit of er meer spaties in de ene zijn dan in de andere, gebruik dan het volgende commando: diff -w bestand1 bestand2
Lege regels negeren bij het vergelijken van twee bestanden
Als het u niet kan schelen dat een bestand extra lege regels bevat, vergelijkt u de bestanden met het volgende commando: diff -B file1 file2
Samenvatting
U kunt meer informatie vinden door de handleiding van het diff-commando te lezen. man verschil
Het diff-commando kan in zijn eenvoudigste vorm worden gebruikt om alleen de verschillen tussen twee bestanden weer te geven. Je kunt het ook gebruiken om een diff-bestand te maken als onderdeel van een patchstrategie. Een andere opdracht die u kunt gebruiken om bestanden te vergelijken, is de opdracht cmp. Dit vergelijkt bestanden byte voor byte.