linux user group brescia

immagine del castello

Archivio della mailing list

colori vs b/n nell'output a console

Maurizio Paolini paolini a lugbs.linux.it
Ven 22 Set 2000 12:41:02 UTC
>  Spero di non scrivere troppe inesattezze (nel caso mi correggerete).  ;-)
>  M'interessava sapere come faccio a discernere se una "console" (o tty ? è
> lo stesso ?) supporta il colore: ho scritto uno shellscript che emette il
> suo output usando codici ANSI ma in caso la console non gestisse i colori (o
> i codici ANSI) verrebbero fuori tutta una serie di "schifezze" (i vari
> codici "\033[....") che preferirei evitare al povero utente (anche per non
> fare, IO, la figura del... pinguino).  ;-)

Dovessi farlo io mi baserei sul valore della variabile di environment TERM,
che viene normalmente settata "xterm-color".
L'idea di usare "tput" mi pare sensatissima, solo che poi un terminale
potrebbe essere a colori, ma non essere gestito con le sequenze di escape
che uno si aspetta (in linea di principio, non so in pratica) Siccome tput
si basa sul database "terminfo" (usando comunque TERM come chiave di ingresso),
poi uno dovrebbe usare sempre "terminfo" per determinare quale sequenza di
escape permette di settare un determinato colore...  Cosi' uno farebbe una
cosa pulita e portabile.  (pero' e' faticoso...)

>  Dando un comando "set | less" riesco a vedere, fra le altre, la variabile
> "COLORTERM=1"... domanda: è la variabile giusta ?.. mi posso fidare ad

Mah, io ad esempio, non la vedo settata! Quindi non mi fiderei.

>  Altra domanda che dicende dalle precedenti (soprattutto dall'ultima): le
> variabili che vedo in output al comando di cui sopra (COLORTERM, COLUMNS,
> HOME, IFS, DIR, ...) vengono settate da tutte le shell oppure sono tipiche
> di Bash ? (a parte, ovviamente, quelle BASH_xyz)

Le variabili settate "prima" di invocare la shell sono pochissime, penso 
LOGNAME, USER, HOME, MAIL, TERM, PWD, PATH e qualche altra, e comunque sono
sempre a discrezione del programma di accesso: login piuttosto che telnet o
ssh... il resto viene settato dalla shell.

mp



Maggiori informazioni sulla lista Lug