linux user group brescia

immagine del castello

Archivio della mailing list

colori vs b/n nell'output a console

Gabriele Villi gvilli a iol.it
Ven 22 Set 2000 14:19:02 UTC

Maurizio Paolini wrote:

> 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...)
> 
perfettamente d'accordo. A questo punto tanto vale appoggiarsi ad un
linguaggio piu' evoluto (sparo: potrebbe essere TCL/TK???)
Per come la vedo io, se l'obiettivo e' cercare di migliorare un po'
l'output di uno script va bene qualsiasi soluzione semplice e poco
dispendiosa (TERM, tput o altro). In fondo, per quel che ne so io,  le
sequenze ANSI per la gestione degli attributi principali sono le stesse
per la maggioranza dei terminali (senno' che standard sarebbe?)
Se invece si deve costruire una interfaccia un po' raffinata e realmente
portabile allora e' necessario fare usa di strumenti piu' adeguati e
complessi, ma questa e' tutta un'altra storia e ben piu' lunga (vedi la
marea di librerie "standard" che esistono...)

Una considerazione, pero': inserire caratteri "strani" in un output
potrebbe anche non essere una buona idea perche' bisogna tenere presente
che non sempre l'output andra' a video, ma potrebbe essere rediretto in
una pipe (o un pipe???)  o in un file [begin banality] siamo in unix,
non in win!!! [end banality]. Ad esempio se creo lo script ~/poesia 

#!/bin/sh
printf "la \\033[31mvispa \\033[30m teresa"

allora dando

 ~/poesia 

vedo a terminale la frase con la scritta bella colorata (e l'utente e'
contento), ma dando

 ~/poesia | fgrep "vispa teresa"

non vedo proprio niente (e l'utente s'incazza!!!)

> >  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.

/bin/login imposta 

HOME, PATH, SHELL, TERM, MAIL, e  LOGNAME.

da un rapido consulto di man bash risulta inoltre che le variabili
*definite* da tale shell sono

PPID PWD REPLY UID EUID BASH BASH_VERSION SHLVL RANDOM SECONDS LINENO
HISTCMD OPTARG OPTIND HOSTTYPE OSTYPE OLDPWD

poi ce n'e' un'altra sfilza che sono *usate* dalla shell, ad alcune
delle quali viene assegnato un valore di default. Io ne conoscevo meno
della meta'!! 

Quanto a telnet, per le macchine linux mi pare che il demone tcpd (che
implementa il telnet server) si appoggi comunque su /bin/login per
autenticare gli accessi.

gv



Maggiori informazioni sulla lista Lug