Ga naar inhoud

πŸ” Het comm Commando in Linux

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

Het commando comm wordt gebruikt om twee gesorteerde bestanden regel voor regel te vergelijken.
Het is handig om gemeenschappelijke en unieke regels tussen twee bestanden te identificeren.

Achtergrondinformatie

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

  • comm vereist dat de bestanden gesorteerd zijn (gebruik sort indien nodig).
  • Het kan drie kolommen weergeven: alleen in bestand1, alleen in bestand2, en gemeenschappelijk.
  • In de praktijk wordt comm vaak gebruikt voor tekstanalyse, lijsten vergelijken en data-integriteit.

Controleren of comm aanwezig is

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

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

comm --version
Voorbeeldoutput
comm (GNU coreutils) 9.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

βš™οΈ Installeren van comm

Het commando comm maakt deel uit van het pakket coreutils.
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 coreutils

Voorbeeldoutput
comm (GNU coreutils) 8.30
Copyright (C) 2018 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 comm-commando:

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

Commando:

comm bestand1.txt bestand2.txt
Voorbeeldoutput:
    regel1bestand1
regel2bestand2
        gemeenschappelijke regel

  • comm -1 bestand1.txt bestand2.txt β†’ Verberg de eerste kolom (alleen in bestand1)
  • comm -2 bestand1.txt bestand2.txt β†’ Verberg de tweede kolom (alleen in bestand2)
  • comm -3 bestand1.txt bestand2.txt β†’ Verberg de derde kolom (gemeenschappelijke regels)
  • comm -12 bestand1.txt bestand2.txt β†’ Toon alleen gemeenschappelijke regels
  • comm --check-order bestand1.txt bestand2.txt β†’ Controleer of bestanden gesorteerd zijn
  • comm --output-delimiter="," bestand1.txt bestand2.txt β†’ Gebruik aangepaste scheidingsteken tussen kolommen

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

1. Per gebruiker instellen

Voeg dit toe aan ~/.bashrc:

alias commcommon='comm -12'

2. System-wide instellen

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

Logging van het comm-commando

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

Voorbeeld auditd regel

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

Logs bekijken:

ausearch -k comm_monitor

Of rechtstreeks in:

less /var/log/audit/audit.log

Updaten van comm

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

Voorbeeld (Debian/Ubuntu):

sudo apt update
sudo apt install --only-upgrade coreutils

Verwijderen van comm

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

Voorbeeld (Debian/Ubuntu):

sudo apt remove coreutils

πŸ“– Handleiding

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

man comm
Voorbeeld
COMM(1)                    User Commands                    COMM(1)

NAME
       comm - compare two sorted files line by line

SYNOPSIS
       comm [OPTION]... FILE1 FILE2

DESCRIPTION
       Compare two sorted FILEs line by line and output three columns.