Ga naar inhoud

πŸ” Het cmp Commando in Linux

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

Het commando cmp wordt gebruikt om twee bestanden byte voor byte te vergelijken.
Het is vooral handig om snel te controleren of bestanden identiek zijn, inclusief binaire bestanden.

Achtergrondinformatie

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

  • cmp vergelijkt bestanden en stopt bij de eerste afwijking.
  • Het toont standaard het byte- en regelnummer waar de eerste afwijking optreedt.
  • In de praktijk wordt cmp vaak gebruikt bij binaire bestanden, scripts en backups om integriteit te controleren.

Controleren of cmp aanwezig is

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

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

cmp --version
Voorbeeldoutput
cmp (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 cmp

Het commando cmp 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
cmp (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 cmp-commando:

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

Commando:

cmp bestand1.txt bestand2.txt
Voorbeeldoutput:
bestand1.txt bestand2.txt differ: byte 45, line 3

  • cmp -s bestand1.txt bestand2.txt β†’ Stil, alleen exit-status geeft verschil aan
  • cmp -i 10 bestand1.txt bestand2.txt β†’ Start vergelijking vanaf byte 10
  • cmp -n 50 bestand1.txt bestand2.txt β†’ Vergelijk alleen de eerste 50 bytes
  • cmp --verbose bestand1 bestand2 β†’ Toon extra informatie bij vergelijking
  • cmp --quiet bestand1 bestand2 β†’ Alleen exit-status, geen output
  • cmp --help β†’ Toon beschikbare opties

Het cmp-commando heeft weinig configuratie, maar je kunt aliassen maken:

1. Per gebruiker instellen

Voeg dit toe aan ~/.bashrc:

alias cmps='cmp -s'

2. System-wide instellen

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

Logging van het cmp-commando

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

Voorbeeld auditd regel

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

Logs bekijken:

ausearch -k cmp_monitor

Of rechtstreeks in:

less /var/log/audit/audit.log

Updaten van cmp

Het cmp-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 cmp

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

Voorbeeld (Debian/Ubuntu):

sudo apt remove diffutils

πŸ“– Handleiding

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

man cmp
Voorbeeld
CMP(1)                     User Commands                     CMP(1)

NAME
       cmp - compare two files byte by byte

SYNOPSIS
       cmp [OPTION]... FILE1 [FILE2]

DESCRIPTION
       Compare two files and report the first difference.