Startpagina > Tekstverwerking en zoeken > diff

diff: Gids voor het vergelijken van bestands-/directoryverschillen

Vergelijkt de verschillen tussen twee objecten regel voor regel en geeft deze weer in een leesbaar formaat (unified/context/side-by-side). Veel gebruikt voor het maken van patches, codereviews en het vergelijken van configuratiewijzigingen.

Overzicht

diff vergelijkt wijzigingen tussen twee bestanden of mappen en toont welke regels zijn toegevoegd, verwijderd of gewijzigd. De uitvoerindeling kan worden gekozen (unified, context, side-by-side) en de gevoeligheid van de vergelijking kan worden aangepast voor zaken als spaties of hoofd-/kleine letters.

Belangrijkste kenmerken

  • Regel-voor-regel vergelijking en menselijk leesbare uitvoerformaten
  • Recursieve vergelijking tussen mappen mogelijk (-r)
  • Diverse negeerregels voor spaties, hoofd-/kleine letters, lege regels, etc.
  • Ondersteuning voor unified formaat (-u), geschikt voor het genereren van patches (.patch)
  • Optimalisatie-opties voor de prestaties bij het vergelijken van grote bestanden

Voorbeelden van gebruiksscenario's

  • Codereview: Alleen gewijzigde bestanden extraheren als patch
  • Configuratiebestands-wijzigingen bijhouden: Vergelijken van configuraties voor en na implementatie
  • Back-up/snapshot vergelijking: Verschillen tussen specifieke tijdstippen controleren
  • Onbedoelde wijzigingen detecteren tijdens document-/gegevensvoorverwerking
  • Beveiligingscontrole: Verdachte wijzigingen controleren in extern geïmplementeerde binaries/scripts

diff uitvoerformaten

De uitvoerformaten van diff geven instructies weer om het eerste bestand in het tweede bestand te veranderen.

  • `a` (add): Regels die niet in het eerste bestand stonden, zijn **toegevoegd** aan het tweede bestand. (bijv. `1a2`)
  • `c` (change): De betreffende regels zijn in beide bestanden **gewijzigd**. (bijv. `1c2`)
  • `d` (delete): Regels die in het eerste bestand stonden, zijn **verwijderd** uit het tweede bestand. (bijv. `1d2`)

Belangrijkste opties

Veelgebruikte opties gegroepeerd per doel.

1) Basisgedrag & uitvoerformaten

2) Bereik/doel van vergelijking specificeren

3) Uitvoercontrole/negeerregels

4) Hulp/Versie

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`diff` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

Veelvoorkomende vergelijkingsscenario's samengevat als voorbeelden.

Patch genereren in unified formaat

diff -u old.conf new.conf > change.patch

Recursieve directoryvergelijking

diff -ruN ./v1 ./v2

Vergelijken met negeren van spatieverschillen

diff -uw src_old.c src_new.c

Naast elkaar weergeven + gemeenschappelijke regels verbergen

diff -y --suppress-common-lines a.txt b.txt

Exitcodes

Raadpleeg deze bij het uitvoeren van vertakkingslogica in scripts.

diff exitstatuswaarden
Code Betekenis
0 Beide objecten zijn identiek
1 Er zijn verschillen
2 Fout opgetreden (gebruiksfout/bestand ontoegankelijk, etc.)

Installatie

Meestal standaard inbegrepen bij de meeste distributies, maar installeer het diffutils-pakket als het ontbreekt.

Debian/Ubuntu

sudo apt update && sudo apt install -y diffutils

RHEL/CentOS/Fedora

sudo dnf install -y diffutils

Arch Linux

sudo pacman -S --needed diffutils

openSUSE

sudo zypper install -y diffutils

Tips & waarschuwingen

Veelvoorkomende aandachtspunten in de praktijk.

  • Het patchformaat gebruikt meestal -u als standaard. Git gebruikt intern ook een vergelijkbaar unified formaat.
  • Overmatig gebruik van spatiebehandelingsopties (-w, -b, -B) kan belangrijke wijzigingen maskeren.
  • Normaliseer Windows/Linux regeleindverschillen met --strip-trailing-cr voor eenvoudigere vergelijking.
  • Gebruik -r en -x/-X (uitsluitingsregels) samen bij het vergelijken van mappen om onnodige bestanden te filteren.
  • Gebruik de -q optie als u alleen snel wilt controleren of iets bestaat. Het toont geen details.

gerelateerde commando's

Functional vergelijkbare of vaak samen gebruikte commando's.


Hétzelfde categoriecommando