Diff-bestanden gebruiken in Linux
Diff is een opdrachtregelprogramma voor Unix-systemen waarmee u twee bestanden of mappen kunt vergelijken en de verschillen ertussen kunt zien. Het is ideaal om oude en nieuwe versies van bestanden te vergelijken om te zien wat er is veranderd. In dit artikel laten we je zien hoe je diff
eenvoudig bestanden kunt vergelijken in Linux.
Bestanden vergelijken met diff
- Open een terminalvenster.
- Typ
diff
en de paden naar twee bestanden die u wilt vergelijken. In dit geval vergelijk ik twee kleine C-programma’s op mijn bureaublad met behulp van de volgende opdracht:
diff ~/Desktop/hello.c ~/Desktop/hello-1.c
- Druk op Enterom de opdracht te verzenden. Het resulterende scherm toont u alle verschillende lijnen tussen de bestanden. Vergeleken regelnummers worden weergegeven als “1c1”, wat betekent dat de eerste regel is gewijzigd en dat de volgende verschillen zijn gevonden.
- Om de bestanden en hun verschillen naast elkaar te zien, gebruikt u de
-y
vlag achterdiff
. Bijvoorbeeld:
diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c
Elke lijn met een pijpsymbool ( |
) is een lijn met een verschil. Zorg er wel voor dat u eerst uw terminalvenster uitvouwt, anders kunt u het scherm moeilijk zien.
Bestanden vergelijken met Meld
De functionaliteit van diff
is ook toegankelijk via Meld , een GUI voor diff
. Gezien het feit dat de gebruikersinterface van diff moeilijk onder de knie te krijgen is, is Meld een handig hulpmiddel.
- Installeer Meld vanaf de opdrachtregel door terminal te openen en te typen:
sudo apt -y install meld
of
sudo dnf -y install meld
voor op RPM gebaseerde distro’s.
Hiermee wordt de apt-pakketbeheerder geïnitialiseerd en begint Meld te installeren. Merk op dat de -y
vlag automatisch “ja” zegt tegen elke prompt; verwijder het alstublieft als u deze prompts liever handmatig bevestigt.
- Voer uw beheerderswachtwoord in wanneer daarom wordt gevraagd. Wanneer u de opdrachtprompt opnieuw ziet, is de installatie voltooid en kan Meld worden geopend.
- Wanneer u Meld opent, ziet u drie opties: Bestandsvergelijking, Directoryvergelijking en Versiebeheerweergave. Klik op “Bestand”.
- Er verschijnen twee vervolgkeuzemenu’s, beide met de tekst “(Geen)”. Klik op een bestand om een bestand te selecteren ter vergelijking.
- Klik op het andere vervolgkeuzemenu om een tweede bestand te selecteren ter vergelijking.
- Klik op de knop “Vergelijken”.
- Het volgende venster vat alle gevonden verschillen tussen twee bestanden samen. Rode karakters zijn verschillen en de blauwe achtergrond geeft aan dat er een verschil is in die lijn. Een groene achtergrond geeft aan dat er wel een regel in het ene bestand staat, maar niet in het andere.
- Om tussen verschillen te navigeren, klikt u op de knoppen omhoog en omlaag in de menubalk. U kunt ook direct met uw muis in het document klikken.
Bestanden manipuleren in Meld
Naast het maken van vergelijkingen, kunt u met Meld vergeleken bestanden wijzigen. Meld blijft het document analyseren op wijzigingen terwijl u een van beide versies wijzigt, en u kunt op elk gewenst moment op Ctrl+ drukken om de wijzigingen ongedaan te maken.Z
- Om wijzigingen van het ene bestand naar het andere te kopiëren, klikt u op de kleine zwarte pijlen tussen de wijzigingen. Als u bijvoorbeeld op de pijl aan de linkerkant klikt, wordt de lijn van het linkerdocument gebruikt om het document aan de rechterkant te overschrijven.
- Regels kunnen ook in documenten worden ingevoegd zonder ze te overschrijven. Als u de toets ingedrukt houdt Ctrl, ziet u de pijlen van de laatste stap veranderen in plustekens. Klik op het pictogram om een klein dialoogvenster te openen waarin u kunt kiezen waar u een nieuwe regel wilt invoegen.
- Typ ten slotte rechtstreeks in uw document. Plaats gewoon uw cursor zoals u normaal zou doen en begin met typen.
- Als u klaar bent met het aanbrengen van wijzigingen, klikt u op de knop “Opslaan” om uw bestanden op te slaan.
diff-bestanden maken met Meld en diff
Naast het tonen van de verschillen tussen twee bestanden, kunt u Meld ook gebruiken om “diff-bestanden” te maken. Dit zijn kleine stukjes tekst met instructies voor het toepassen van wijzigingen van de ene bestandsversie op de andere. Dit is handig als u snel code-updates wilt distribueren zonder het volledige bronarchief opnieuw te delen.
- Open de twee bestanden die u wilt vergelijken.
- Klik op het menu Opties in de rechterbovenhoek van het venster.
- Selecteer het submenu “Vergelijking”.
- Klik op de suboptie “Formatteren als patch”.
- Hierdoor wordt een klein venster geopend waarin Meld het volledige diff-bestand tussen uw twee bestanden zal afdrukken. Op dit punt kunt u deze tekst naar uw klembord kopiëren of opslaan in een bestand. Om dit laatste te doen, klikt u op de knop “Patch opslaan”.
Hoewel het maken van diff-bestanden in Meld eenvoudig en ongecompliceerd is, zijn er gevallen waarin het niet mogelijk is om toegang te krijgen tot een GUI tijdens het bewerken van code. Daarvoor kun je het diff
programma ook gebruiken om een diff-bestand te genereren.
- Open een terminal en controleer of er verschillen zijn tussen de twee bestanden:
diff hello.c hello-1.c
- Maak een eenvoudig diff-bestand met behulp van de
-c
vlag:
diff -c hello.c hello-1.c > hello.diff
- Gebruik optioneel de
-u
optie die de twee tekststromen combineert tot één verenigd diff-blok. Dit kan handig zijn als u veel code wijzigt en schijfruimte wilt besparen:
diff -u hello.c hello-1.c > hello.diff
diff-bestanden gebruiken om de broncode te patchen
Zoals hierboven besproken, kunt u met een diff-bestand een gemakkelijk deelbare samenvatting maken van wijzigingen in uw broncode. diff zelf kan deze echter niet toepassen op bestaande bestanden. Gebruik hiervoor het begeleidende programma van diff, patch
.
- Bepaal de originele broncode die het diff-bestand probeert te wijzigen:
cat hello.diff | sed 1q
- Maak een back-up van uw originele broncode:
cp hello.c hello.c.old
- Voer het patchprogramma uit met het originele bestand op het eerste argument en het diff-bestand op het tweede:
patch hello.c hello.diff
Het is belangrijk op te merken dat een diff-bestand ook wijzigingen kan bevatten die meerdere bestanden omvatten. Pas dit toe door alle bestanden die nodig zijn om bij te werken in een enkele map te plaatsen en patch < multi-file.diff
.
- Controleer of het patchprogramma uw bronbestand heeft bijgewerkt door het te vergelijken met uw back-up:
diff -y hello.c hello.c.old
Ter info: Git is een krachtig platformonafhankelijk versiebeheerprogramma. Leer hoe u het kunt gebruiken om uw broncode-opslagplaatsen in Linux te beheren.
Veel Gestelde Vragen
Is het mogelijk om een bestand meerdere keren te patchen?
Ja. Het is echter belangrijk op te merken dat de regelnummerwaarde in een diff-bestand statisch is. Als u bijvoorbeeld een diff toepast die vijf regels code op regel 1 toevoegt, wordt het hele bestand met vijf regels aangepast. Terwijl moderne tools veranderingen van enkele diffs kunnen compenseren, kan het toepassen van meer dan één onnodige codeconflicten veroorzaken.
Is een diff-bestand vergelijkbaar met een Git-patch?
Ja. Zowel diff als Git gebruiken een vergelijkbaar type formaat voor hun codepatches. Als gevolg hiervan kunt u de twee hulpprogramma’s verwisselen bij het toepassen van updates op uw broncode. Hardlopen is bijvoorbeeld git apply hello.diff
gelijk aan hardlopen patch < hello.diff
.
Kun je Meld gebruiken met een versiebeheerprogramma zoals Git?
Ja. Een van de krachtigste functies van Meld is dat het transparant kan werken met elk versiebeheerprogramma. Dit geeft u de mogelijkheid om eenvoudig te communiceren met uw repositories buiten de terminalinterface.
Om dit te doen, drukt u op Ctrl+ Nen klikt u vervolgens op de knop “Versiecontroleweergave”. Klik vervolgens op de vervolgkeuzelijst eronder en selecteer ‘Overig’. Dit zal een klein venster openen waarin je je Git-repository kunt zien en laden.
Afbeelding tegoed: Unsplash . Alle screenshots door Ramces Red.
Geef een reactie