Ga naar inhoud

πŸ” Het diff Commando in Linux

In deze handleiding leer je hoe je diff gebruikt op een Linux-systeem.

Het commando diff wordt gebruikt om verschillen tussen bestanden of directories te vergelijken en weer te geven.
Het is essentieel voor het analyseren van wijzigingen in tekstbestanden, scripts of broncode.

Achtergrondinformatie

Het commando diff is standaard aanwezig op vrijwel alle Unix/Linux-systemen.

  • diff vergelijkt bestanden regel voor regel en toont de verschillen.
  • Het kan ook gebruikt worden voor het vergelijken van hele mappen met de -r optie.
  • In de praktijk wordt diff veel gebruikt in softwareontwikkeling, backups en configuratiebeheer.

Controleren of diff aanwezig is

Het diff-commando staat bijna altijd standaard op je systeem geΓ―nstalleerd.

Wil je controleren of diff aanwezig is, dan kun je de versie opvragen:

diff --version
Voorbeeldoutput
diff (GNU diffutils) 3.8
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

βš™οΈ Installeren van diff

Het commando diff maakt deel uit van het pakket diffutils.
Daarom is het op vrijwel alle Linux-distributies standaard geΓ―nstalleerd, inclusief Debian en Ubuntu.

Installatie op Debian/Ubuntu:

sudo apt update
sudo apt install diffutils

Voorbeeldoutput
diff (GNU diffutils) 3.8
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

Hieronder vind je enkele veelgebruikte combinaties van het diff-commando:

  • diff bestand1.txt bestand2.txt β†’ Vergelijk twee bestanden
Voorbeeld gebruik van diff bestand1.txt bestand2.txt

Commando:

diff bestand1.txt bestand2.txt
Voorbeeldoutput:
3c3
< Oude regel
---
> Nieuwe regel

  • diff -u bestand1.txt bestand2.txt β†’ Toon verschillen in unified formaat
  • diff -q bestand1.txt bestand2.txt β†’ Geef alleen aan of bestanden verschillend zijn
  • diff -r map1 map2 β†’ Vergelijk recursief alle bestanden in twee mappen
  • diff --side-by-side bestand1.txt bestand2.txt β†’ Toon bestanden naast elkaar
  • diff --brief bestand1.txt bestand2.txt β†’ Toon alleen of bestanden verschillen
  • diff --strip-trailing-cr bestand1.txt bestand2.txt β†’ Negeer carriage return verschillen
  • diff --color=auto bestand1.txt bestand2.txt β†’ Kleurverschillen voor betere leesbaarheid

Het diff-commando heeft weinig configuratie, maar je kunt aliassen maken voor veelgebruikte opties:

1. Per gebruiker instellen

Voeg dit toe aan ~/.bashrc:

alias diffu='diff -u'
alias diffr='diff -r'

2. System-wide instellen

Plaats dezelfde alias in /etc/bash.bashrc of /etc/profile

Logging van het diff-commando

Het diff-commando schrijft zelf geen logbestanden weg.
Wil je gebruik van diff monitoren, dan kan dat met auditd.

Voorbeeld auditd regel

sudo auditctl -w /usr/bin/diff -p x -k diff_monitor
  • -w /usr/bin/diff β†’ bewaak het bestand diff
  • -p x β†’ log bij uitvoeren
  • -k diff_monitor β†’ tag voor herkenning

Logs bekijken:

ausearch -k diff_monitor

Of rechtstreeks in:

less /var/log/audit/audit.log

Updaten van diff

Het diff-commando maakt deel uit van diffutils.
Update het pakket via de package manager van je distributie.

Voorbeeld (Debian/Ubuntu):

sudo apt update
sudo apt install --only-upgrade diffutils

Verwijderen van diff

Het diff-commando kan verwijderd worden, maar dit kan scripts of workflows beΓ―nvloeden die afhankelijk zijn van bestandsvergelijkingen.

Voorbeeld (Debian/Ubuntu):

sudo apt remove diffutils

πŸ“– Handleiding

De ingebouwde handleiding van Linux-commando’s is altijd beschikbaar via man.
Voor diff:

man diff
Voorbeeld
DIFF(1)                     User Commands                     DIFF(1)

NAME
       diff - compare files line by line

SYNOPSIS
       diff [OPTION]... FILES...

DESCRIPTION
       Compare FILES line by line and output the differences.