Tail, grep, less, more e compagnia analizzando dovrebbero ormai essere comandi noti, stranoti e utilizzati spesso.

Hanno un unico “difetto”…a volte il loro output è poco leggibile e ci costringe a strizzare bene bene gli occhi alla ricerca di ciò che cerchiamo.

Quanto sarebbe bello avere un output colorato in stile Kate?

Beh, non scoraggiatevi, si-può-fare!!!!

Esiste un bellissimo comando, installabile su tutti i sistemi GnuLinux, che si chiama grc.
Come ci spiega il relativo manuale

grc will execute command command with optional parameters [args] piping its stdout or stderr into grcat, with apropriate configuration file.

Configuration file for grc is determined by /etc/grc.conf file.

Format of /etc/grc.conf: each entry consists of 2 lines, between entries there can be any number of empty lines or lines beginning with # (comments)

First line is regular expression, second line the name of configuration file for grcat.

In pratica l’output di “grc comando” viene passato a grcat con un “pipe” interno; grcat quindi elabora in base ai suoi file di configurazione e restituisce l’output colorato.

Per esempio, se usiamo “tail file.log” come comando, grc lo intercetta, grazie alle righe di grc.conf relative:

# log file
\b\w+\b.*log\b
conf.log

e ne passa l’output a grcat, che si va a leggere il relativo file di configurazione (/usr/share/grc/conf.log) e, in base alle espressioni contenute, colora l’output

# this configuration file is suitable for displaying kernel log files

# display this line in yellow and stop further processing
regexp=.*last message repeated \d+ times$
colours=yellow
count=stop
======
# this is date
regexp=^… (\d| )\d \d\d:\d\d:\d\d(\s[\w\d]+?\s)
colours=green, green, red
count=once
======
# everything in parentheses
regexp=\(.+?\)
colours=green
count=more
======
……..

Otteniamo quindi qualcosa del genere, usando “grc tail /var/log/kern.log”

T2_912

Ok, questo output non è il massimo, ma rende molto bene l’idea.

Ovviamente, per evitare ogni volta di doversi ricordare di scrivere “grc ….” ci possiamo creare degli alias modificando il nostro “~/.bash_aliases”

alias tail=’grc tail’

e da questo momento ogni volta che eseguiamo un tail, automaticamente invochiamo “grc tail”…