Diff-bestanden gebruiken in Linux

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 diffeenvoudig bestanden kunt vergelijken in Linux.

Bestanden vergelijken met diff

  • Open een terminalvenster.
  • Typ diffen 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

Een terminalvenster met een diff-opdracht.
  • 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.
Een terminalvenster met de uitvoer van een diff-opdracht.
  • Om de bestanden en hun verschillen naast elkaar te zien, gebruikt u de -yvlag achter diff. Bijvoorbeeld:

diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c

Een terminalvenster met een opdracht die een visuele diff zal afdrukken.

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.

Een terminalvenster met de uitvoer van een visueel diff-commando.

Bestanden vergelijken met Meld

De functionaliteit van diffis 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 -yvlag automatisch “ja” zegt tegen elke prompt; verwijder het alstublieft als u deze prompts liever handmatig bevestigt.

Een terminalvenster met de installatieopdracht voor Meld.
  • Voer uw beheerderswachtwoord in wanneer daarom wordt gevraagd. Wanneer u de opdrachtprompt opnieuw ziet, is de installatie voltooid en kan Meld worden geopend.
Een terminalvenster met het installatieproces voor Meld.
  • Wanneer u Meld opent, ziet u drie opties: Bestandsvergelijking, Directoryvergelijking en Versiebeheerweergave. Klik op “Bestand”.
Een screenshot van het welkomstscherm van Meld.
  • Er verschijnen twee vervolgkeuzemenu’s, beide met de tekst “(Geen)”. Klik op een bestand om een ​​bestand te selecteren ter vergelijking.
Een screenshot van het Meld-scherm met een markering op de eerste bestandskiezer.
  • Klik op het andere vervolgkeuzemenu om een ​​tweede bestand te selecteren ter vergelijking.
Een screenshot van het Meld-scherm met een markering op de tweede bestandskiezer.
  • Klik op de knop “Vergelijken”.
Een screenshot van het Meld-scherm met een markering 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.
Een screenshot van het Meld-programma met een eenvoudige vergelijkingsweergave van twee bestanden.
  • 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.
Een screenshot van het Meld-programma met de diff-navigatieknop.

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.
Een screenshot van het Meld-programma met de diff-oplosknoppen.
  • 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.
Een screenshot van het Meld-programma met de prompt voor het toevoegen van diff.
  • 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.
Een screenshot van het Meld-programma met de knop voor opslaan per bestand.

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.
Een screenshot van het Meld-programma met een eenvoudig verschil.
  • Klik op het menu Opties in de rechterbovenhoek van het venster.
Een screenshot met de optieknop van Meld.
  • Selecteer het submenu “Vergelijking”.
Een screenshot van het optiemenu van Meld met een markering in het submenu Vergelijking.
  • Klik op de suboptie “Formatteren als patch”.
Een screenshot van het Comparison-submenu met een markering op de Formaat-suboptie.
  • 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”.
Een screenshot van Meld's Patch-subvenster met een markering op de

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 diffprogramma 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

Een terminal die een eenvoudige diff tussen twee bestanden laat zien.
  • Maak een eenvoudig diff-bestand met behulp van de -cvlag:

diff -c hello.c hello-1.c > hello.diff

Een terminal die een standaard uitvoer van een diff-bestand laat zien.
  • Gebruik optioneel de -uoptie 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

Een terminal die een meer complexe uniforme diff-uitvoer laat zien.

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

Een terminal met de header van het originele bronbestand.
  • 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

Een terminal met een eenvoudige patchopdracht naar een enkel bronbestand.

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

Een terminal die het visuele verschil laat zien tussen het nieuwe en het originele bronbestand.

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.diffgelijk 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

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *