Man: Coloriamo l'output dei manuali di Linux

Se abbiamo un terminale che supporta i colori perchè non colorare l'output di Man per renderlo più chiaro?

Salve a tutti, oggi voglio proporvi un paio di piccoli trucchi che vi permetteranno di colorare l'output di Man, in modo da renderlo più comprensibile.

Output Man Colorato

Man è un comando conosciutissimo da tutti gli utenti linux e serve per visualizzare le pagine di aiuto, lo stile con cui vengono formattate le pagine di aiuto è processato da nroff e poi visualizzato da un pager come "Less" per esempio.

Utilizzando il comando

nroff -man /path/file/aiuto.1 | less

otterrete praticamente lo stesso risultato.

Vediamo come fare per colorare il nostro output.

Metodo 1:

Il primo metodo che vi propongo è molto semplice, è sufficiente installare "Most", su gentoo basta usare il seguente comando:

emerge most

e dopodichè sarà sufficiente cambiare la variabile $PAGER con il percorso in cui avete installato most.

export PAGER=/usr/bin/most

se volete che la modifica sia definitiva tale comando dovrà essere inserito all'interno del vostro .bashrc o .zshrc, a seconda della console che usate.

Metodo 2:

Il secondo metodo è un po' più complesso, ma ve lo consiglio caldamente perchè potrete continuare ad usare "less", che ha più funzioni rispetto a most. E poi è presente in praticamente qualunque distribuzione di Linux.

Aggiungete quanto segue al vostro .bashrc o .zshrc

export LESS_TERMCAP_mb=$'\E[01;31m' # Inizio testo lampeggiante
export LESS_TERMCAP_md=$'\E[01;38;5;74m' # Inizio grassetto
export LESS_TERMCAP_me=$'\E[0m' # Fine
export LESS_TERMCAP_se=$'\E[0m' # Fine modo standout
export LESS_TERMCAP_so=$'\E[48;5;25m' # Inizio standout
export LESS_TERMCAP_ue=$'\E[0m' # fine sottolineato
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # Inizio sottolineato

Quando riavvierete la console, automaticamente l'output sarà colorato, se ciò non accadesse sarà necessario fare qualche verifica...

Ovviamente se volete potete tranquillamente modificare i colori come preferite. In questo caso potete fare riferimento alla pagina di wikipedia riguardante gli "ANSI escape codes", seguendo questo link.

Verifiche da fare in caso di problemi

Se l'output non si colora allora sono necessarie alcune verifiche. Iniziamo!

Prima verifica:

Digitate questo comando:

typeset -p LESS_TERMCAP_md | cat -v

Il terminale dovrebbe rispondervi con:

typeset -x LESS_TERMCAP_md="^[[01;31m"

E digitando quest'altro comando:

typeset -p LESS

Dovrebbe ritornarvi:

typeset -x LESS="-r"

Se ciò non accade, allora probabilmente avete inserito gli Export nel file sbagliato, controllatelo, ma il parametro "-r" non sempre è necessario...

Seconda verifica:

Il comando seguente:

echo "${LESS_TERMCAP_md}azzurro${LESS_TERMCAP_me}"

dovrebbe tornarvi:

azzurro

con le impostazioni che vi ho proposto. Se non accade, qualcosa non va con le impostazioni con il vostro terminale.

Terza verifica:

il comando seguente:

bzcat /usr/share/man/man1/ls.1.bz2 | /bin/sh /usr/bin/nroff -mandoc -Tutf8 | head -n 5 | cat -v

Dovrebbe scrivervi le prime righe dell'aiuto di ls, in questo modo:

LS(1)                       User Commands                           LS(1)

N^HNA^HAM^HME^HE

Se invece vi ritrovate una cosa del genere:

LS(1)                       User Commands                           LS(1)

^[[1mNAME^[[0m

La colpa è delle "sgr escape sequences", dovete disattivarle. In Zsh basta aggiungere a .zshrc la seguente riga:

export GROFF_NO_SGR=1

Questo è quanto, ora tutto dovrebbe essere bello colorato.

Buona colorazione a tutti!

Saluti, Penaz.

social