Deze gids zal je laten zien hoe je Linux kunt gebruiken om twee bestanden te vergelijken en hun verschil naar het scherm of naar een bestand uit te voeren.
U hoeft geen speciale software te installeren om bestanden met Linux te vergelijken, maar u moet wel weten hoe u een terminalvenster opent.
Zoals de gekoppelde gids laat zien, zijn er vele manieren om een terminalvenster te openen met behulp van Linux. Het eenvoudigste is om tegelijkertijd op CTRL, ALT en T te drukken.
De bestanden maken om te vergelijken
Om samen met deze handleiding door te gaan, maakt u een bestand met de naam "file1" en voert u de volgende tekst in:
10 groene flessen die zich op een muur bevinden
10 groene flessen die zich op een muur bevinden
Als een groene fles per ongeluk zou vallen
Er zouden 9 groene flessen op de muur staan
U kunt een bestand maken door deze instructies te volgen:
-
Open het bestand door de volgende opdracht te typen: nano-bestand1
-
Typ de tekst in de nano-editor
-
Druk op CTRL en O om het bestand op te slaan
-
Druk op CTRL en X om het bestand te sluiten
Maak nu een ander bestand met de naam "file2" en voer de volgende tekst in:
10 groene flessen die zich op een muur bevinden
Als 1 groene fles per ongeluk zou vallen
Er zouden 9 groene flessen op de muur staan
U kunt een bestand maken door deze instructies te volgen:
-
Open het bestand door de volgende opdracht te typen: nano file2
-
Typ de tekst in de nano-editor
-
Druk op CTRL en O om het bestand op te slaan
-
Druk op CTRL en X om het bestand te sluiten
Hoe twee bestanden te vergelijken met behulp van Linux
De opdracht die in Linux wordt gebruikt om de verschillen tussen 2 bestanden weer te geven, wordt de opdracht diff genoemd.
De eenvoudigste vorm van het commando diff is als volgt:
diff file1 file2
Als de bestanden hetzelfde zijn, zal er bij het gebruik van deze opdracht geen uitvoer zijn, maar omdat er verschillen zijn, ziet u de uitvoer als volgt:
2,4c2,3
<10 groene flessen staan op de muur
<Als één groene fles per ongeluk zou vallen
<Er zouden 9 groene flessen op de muur staan
…
> Als 1 groene fles per ongeluk zou vallen
> Er zouden 9 groene flessen op de muur staan
Aanvankelijk kan de uitvoer verwarrend lijken, maar als je de terminologie eenmaal begrijpt, is het redelijk logisch.
Met je eigen ogen kun je zien dat de verschillen tussen de 2 bestanden zijn als volgt:
- Het tweede bestand heeft slechts drie regels, terwijl het eerste bestand 4 regels heeft.
- Het tweede bestand zegt "1 groene fles" op de derde regel terwijl het eerste bestand "één groene fles" zegt
- Het tweede bestand zegt "there'd" in plaats van "there would" op de laatste regel
De uitvoer van de opdracht diff geeft aan dat er tussen lijnen 2 en 4 van het eerste bestand en lijnen 2 en 3 van het tweede bestand verschillen zijn.
Vervolgens worden de regels weergegeven van 2 tot 4 uit het eerste bestand gevolgd door de 2 verschillende regels in het tweede bestand.
Hoe te tonen als de bestanden anders zijn
Als u alleen wilt weten of de bestanden anders zijn en u niet geïnteresseerd bent in welke regels anders zijn, kunt u de volgende opdracht uitvoeren:
diff-q bestand1 bestand2
Als de bestanden anders zijn, wordt het volgende weergegeven:
Bestanden file1 en file2 verschillen
Als de bestanden hetzelfde zijn, wordt er niets weergegeven.
Hoe een bericht te tonen als de bestanden hetzelfde zijn
Wanneer u een opdracht uitvoert, wilt u weten dat deze correct heeft gewerkt, zodat u een bericht wilt weergeven wanneer u de opdracht diff uitvoert, ongeacht of de bestanden hetzelfde of anders zijn
Om deze vereiste te bereiken met behulp van de opdracht diff, kunt u de volgende opdracht gebruiken :.
diff -s bestand1 bestand2
Als de bestanden hetzelfde zijn, ontvangt u het volgende bericht:
Bestanden file1 en file2 zijn identiek
Hoe de verschillen naast elkaar te produceren
Als er veel verschillen zijn, kan het heel snel verwarrend worden over wat de verschillen eigenlijk zijn tussen de twee bestanden.
U kunt de uitvoer van de opdracht diff 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 regels weer te geven, een <om een regel weer te geven die is verwijderd en een> om een regel weer te geven die is toegevoegd.
Interessant is dat als je de opdracht uitvoert met onze demonstratiebestanden, alle regels anders zullen zijn, behalve de laatste regel van bestand 2 die wordt weergegeven als verwijderd.
Beperken van kolombreedtes
Bij het vergelijken van twee bestanden naast elkaar kan het moeilijk zijn om te lezen als de bestanden veel kolommen met tekst bevatten.
Gebruik de volgende opdracht om een aantal kolommen te beperken:
diff --width = 5 bestandsbestand2
Gevalsverschillen negeren bij het vergelijken van bestanden
Als u twee bestanden wilt vergelijken, maar het u niet uitmaakt of het hoofdlettergebruik tussen de twee bestanden hetzelfde is, kunt u de volgende opdracht gebruiken:
Hoe de achterliggende witte ruimte aan het einde van een lijn te negeren
Als u bij het vergelijken van de bestanden heel veel verschillen ziet en de verschillen worden veroorzaakt door witte spaties aan het einde van de regels, kunt u deze weglaten als wijzigingen door de volgende opdracht uit te voeren:
Alle witte ruimteverschillen tussen twee bestanden negeren
Als u alleen geïnteresseerd bent in de tekst in een bestand en het u niet uitmaakt of er meer spaties in de ene zijn dan in de andere, kunt u de volgende opdracht gebruiken:
Lege regels negeren bij het vergelijken van twee bestanden
Als het je niet uitmaakt dat één bestand extra lege regels bevat, kun je de bestanden vergelijken met de volgende opdracht:
Samenvatting
U kunt meer informatie vinden door de handleiding voor de opdracht diff te lezen.
man diff
De opdracht diff kan in de eenvoudigste vorm worden gebruikt om u alleen de verschillen tussen twee bestanden te tonen, maar u kunt deze ook gebruiken om een diff-bestand te maken als onderdeel van een patchstrategie, zoals weergegeven in deze handleiding voor de opdracht Linux-patch.
Een andere opdracht die u kunt gebruiken om bestanden te vergelijken, is de opdracht cmp zoals weergegeven in deze handleiding. Hiermee worden bytes van bestanden vergeleken met bytes.