Posts RSS Comments RSS 28 Articoli e 6 Commenti fino ad ora

Pagine man colorate

Le pagine man colorate aiutano a trovare, a colpo d’occhio, le informazioni più utili all’interno della pagine di aiuto visualizzata e migliorano la comprensione.

I terminali Linux sono capaci di cose come colorare il testo o aumentarne il peso (grassetto), così da rendere più gradevole e produttiva la sessione di lavoro, attraverso le terminal capabilities. Tra le applicazioni che supportano le termcap c’è anche il pager delle pagine man: less.

Alcune variabili speciali permettono di stabilire i colori da utilizzare; se queste vengono inserite nel file speciale .bashrc, saranno disponibili come variabili di ambiente e le pagine man saranno sempre colorate.

Ecco cosa si potrebbe inserire in .bashrc:

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

In questo modo il comando man man mostrerà:

Pagine man colorate

Questo metodo produce però alcuni effetti collaterali sgradevoli. Ecco cosa accade digitando env:

Effetto collaterale non gradito

Questo accade, probabilmente, perché env ricorre ad un pager sensibile alle termcap. Se si pensa di non poter sopravvivere un giorno in più, in questo mondo troppo colorato che elenca in modo così squinternato le variabili di sistema, si possono comunque avere le pagine man colorate senza questo effetto collaterale semplicemente creando un nuovo file eseguibile, ad esempio in /usr/bin:

$ sudo touch /usr/bin/handbook
Parola d'ordine:
$ sudo chmod a+x /usr/bin/handbook

All’interno del file handbook ci sarà lo script bash:

#!/bin/bash

REQUIRED_PAGE=$@

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
case $TERM in
    xterm)
        export LESS_TERMCAP_us=$'\E[01;34m'
        ;;
    *)
        export LESS_TERMCAP_us=$'\E[01;32m'
        ;;
esac

man $REQUIRED_PAGE
EXIT_STATUS=$?

unset LESS_TERMCAP_mb
unset LESS_TERMCAP_md
unset LESS_TERMCAP_me
unset LESS_TERMCAP_se
unset LESS_TERMCAP_so
unset LESS_TERMCAP_ue
unset LESS_TERMCAP_us

exit $EXIT_STATUS

In questo modo le pagine man colorate saranno accessibili con il comando handbook:

Pagine man colorate con handbook

Approfondimento

Per sapere cosa viene colorato dalle variabili LESS_TERMCAP_xy si deve fare riferimento alla pagine man termcap, al cui interno cercare la spiegazione dei codici mb, md, me, se, so, ue, us. Ad esempio, us indica l’inizio della sottolineatura, mentre ue ne indica la fine.

I valori numerici a due cifre che iniziano con 0, come quello segnato in grassetto in LESS_TERMCAP_so=$’\E[01;44;33m’, permettono di specificare alcune proprietà del testo:

  • 00 = nessuno
  • 01 = grassetto
  • 04 = sottolineato
  • 05 = lampeggiante
  • 07 = rovesciato
  • 08 = nascosto

I valori numerici a due cifre che iniziano con il numero 3, come quello segnato in grassetto in LESS_TERMCAP_so=$’\E[01;44;33m’ colorano il testo:

  • 30 = nero
  • 31 = rosso
  • 32 = verde
  • 33 = giallo
  • 34 = blu
  • 35 = magenta
  • 36 = azzurro
  • 37 = bianco

I valori numerici a due cifre che inizia con 4, come quello segnato in grassetto in LESS_TERMCAP_so=$’\E[01;44;33m’, specificano il colore dello sfondo:

  • 40 = nero
  • 41 = rosso
  • 42 = verde
  • 43 = giallo
  • 44 = blu
  • 45 = magenta
  • 46 = azzurro
  • 47 = bianco

E con questo è tutto.

One Response to “Pagine man colorate”

  1. on 09 set 2008 at 18:20vagabondo

    Un’altra possibilità è mettere in .bashrc questa funzione:

    senv () {
    unset LESS_TERMCAP_mb
    unset LESS_TERMCAP_md
    unset LESS_TERMCAP_me
    unset LESS_TERMCAP_se
    unset LESS_TERMCAP_so
    unset LESS_TERMCAP_ue
    unset LESS_TERMCAP_us
    env
    export LESS_TERMCAP_mb=$’\E[01;31m’
    export LESS_TERMCAP_md=$’\E[01;31m’
    export LESS_TERMCAP_me=$’\E[0m’
    export LESS_TERMCAP_se=$’\E[0m’
    export LESS_TERMCAP_so=$’\E[01;44;33m’
    export LESS_TERMCAP_ue=$’\E[0m’
    export LESS_TERMCAP_us=$’\E[01;32m’

    }

    Basta poi digitare senv invece di env e si ha l’output senza colori.

    È una soluzione alternativa e secondo il mio modesto parere meno intrusiva.

Trackback this post | Feed on Comments to this post

Leave a Reply