Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1382

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>I colori sui terminali Linux</TITLE>


</HEAD>
<BODY>
<H1>I colori sui terminali Linux</H1>

<H2>Thorbj&oslash;rn Ravn Andersen, <CODE>ravn@dit.ou.dk</CODE></H2>v1.4, 7 August 1997
<P><HR>
<EM>  La maggior parte delle distribuzioni Linux hanno un comando '<CODE>ls</CODE>' per elencare il contenuto di una directory, l'output del quale pu&ograve;
essere migliorato e reso pi&ugrave; chiaro usando colori diversi. Ma
configurare questa possibilit&agrave; secondo il proprio gusto pu&ograve; risultare
un compito non banale. Questo documento spiega i vari aspetti del problema, i metodi per modificare i
colori cambiando la configurazione del software esistente, ed indica del
software alternativo non incluso nella Slackware o nella RedHat, che possa
essere usato sulla maggior parte delle versioni di Unix.
La versione in HTML &egrave; disponibile anche su
<A HREF="http://www.mip.ou.dk/~ravn/colour-ls">http://www.mip.ou.dk/~ravn/colour-ls</A>.</EM>
<HR>
<H2><A NAME="s1">1. Introduzione</A></H2>

<P>Negli ultimi anni i monitor a colori sono diventati molto comuni, e gli utenti 
stanno cominciando ad usare programmi che usano il colore per dare una risposta
visiva veloce ad esempio delle parole riservate nei linguaggi di programmazione
o per il controllo immediato delle parole con errori di ortografia. 
<P>Dato che la console di testo di Linux permette l'uso dei colori, l'ls originale
della GNU &egrave; stato prontamente modificato per restituire informazioni a colori,
ed &egrave; stato incluso nella Slackware intorno alla versione 2.0. Nella 
distribuzione standard GNU sono state incluse queste modifiche
migliorandole, e a questo punto dovrebbero fare parte di tutte le
distribuzioni di Linux.
<P>Questa versione &egrave; stata modificata in modo sostanziale rispetto al documento
iniziale, e comprende anche informazioni sugli xterm e su come apportare
alcune modifiche al kernel.
<P>
<P>Le informazioni contenute qui sono state testate sulla RedHat 4.1, e
in origine sono state compilate con la
versione 2.0.2 della Slackware e il kernel 1.1.54. Le informazioni
sulle modifiche del kernel sono state prese dalla slackware 2.2.0 con il
kernel 1.2.13 e tcsh come shell di default, e testate in seguito con un kernel 
2.0.27. Se le usate su un'altra configurazione, o un'altra versione di Unix,
mi farebbe piacere che mi inviaste la vostra configurazione, il sistema 
operativo che usate e la sua versione, e se i colori sono disponibili come
standard. 
<P>
<P>
<H2><A NAME="s2">2. Inizio veloce per gli impazienti</A></H2>

<P>Se avete una distribuzione di Linux <EM>nuova</EM>, apportate queste modifiche
ai file indicati nella vostra home directory. Hanno effetto dopo il login
successivo.
<P>
<BLOCKQUOTE><CODE>
<PRE>
 ~/.bashrc:
     alias ls="ls &hyphen;&hyphen;color"

 ~/.cshrc:
     alias ls 'ls &hyphen;&hyphen;color'
</PRE>
</CODE></BLOCKQUOTE>
<P>Ecco fatto! 
<P>Potete anche fare ``<CODE>eval `dircolors $HOME/.colourrc`</CODE>'', 
per avere i vostri colori personali. Questo file viene creato con 
<CODE>dircolors -p >$HOME/.colourrc</CODE>'' ed &egrave; ben commentato per
poter essere modificato in seguito.
<P>
<H2><A NAME="s3">3. Ma ce l'ho?</A></H2>

<P>Per prima cosa dovete controllare se avete una versione di <CODE>ls</CODE> che
sa come usare i colori in modo corretto. Provate questo comando su una 
console di testo di Linux (funziona anche un xterm):
<P>
<BLOCKQUOTE><CODE>
<PRE>
 % ls &hyphen;&hyphen;color
 
</PRE>
</CODE></BLOCKQUOTE>
<P>(il <CODE>%</CODE> &egrave; il prompt della shell):
Se vi d&agrave; un messaggio di errore che dice che <CODE>ls</CODE> non capisce l'opzione
dovete installare una versione pi&ugrave; recente del pacchetto fileutils della GNU. 
Se non avete il pacchetto di aggiornamento per la vostra distribuzione, 
prendete i sorgenti dal mirror GNU pi&ugrave; vicino e installate direttamente da
quelli.
<P>Se <EM>non</EM> vi d&agrave; un messaggio di errore, avete una versione di <CODE>ls</CODE>
che capisce il comando. Sfortunatamente, alcune delle versioni pi&ugrave; vecchie 
incluse nella Slackware (e forse altre) erano bacate. L'<CODE>ls</CODE> 
compreso nella Redhat 4.1 &egrave; la versione 3.13 che &egrave; a posto.
<P>
<BLOCKQUOTE><CODE>
<PRE>
 % ls &hyphen;&hyphen;version
 ls - GNU fileutils-3.13
 
</PRE>
</CODE></BLOCKQUOTE>
<P>Se date il comando ``<CODE>ls &hyphen;&hyphen; color</CODE>'' su una console di 
testo di Linux l'output dovrebbe venire colorato a seconda dei default del 
sistema, e potete decidere se volete cambiare qualcosa. 
Se l'avete dato in un xterm potete avere visto un qualche cambiamento dei
colori oppure no. Come lo stesso <CODE>ls</CODE>, il programma originale per
gli xterm non permetteva l'uso dei colori dai programmi al suo interno,
ma le versioni pi&ugrave; recenti lo fanno. Se la versione che avete non supporta
i colori dovreste cercarne una pi&ugrave; recente come descritto alla fine di
questo documento. Nel frattempo passate ad una console di testo e continuate
da l&igrave;.
<P>
<P>
<H2><A NAME="s4">4. Tra quali colori si pu&ograve; scegliere</A></H2>

<P>Questo shell script (grazie a tutti quelli che mi hanno mandato versioni
per bash) mostra tutte le combinazioni standard di colori sulla console
corrente. Se non appare nessun colore, la console non permette l'uso della
selezione di colori ANSI.
<P>
<BLOCKQUOTE><CODE>
<PRE>
#!/bin/bash
# Mostra i colori ANSI
#
esc="\033["
echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43"
echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _"
for fore in 30 31 32 33 34 35 36 37; do
  line1="$fore  " 
  line2="    "
  for back in 40 41 42 43 44 45 46 47; do
  line1="${line1}${esc}${back};${fore}m Normal 
  ${esc}0m"
  line2="${line2}${esc}${back};${fore};1m Bold
  ${esc}0m"

  done
echo -e "$line1\n$line2"
done
</PRE>
</CODE></BLOCKQUOTE>
<P>Il colore del primo piano viene elencato a sinistra, e il colore di sfondo
nella casella. Se volete caratteri pi&ugrave; evidenti aggiungete un "1" ai
parametri; ad esempio blu su bianco sar&agrave; "37;44;1". La sequenza completa di
selezione ANSI &egrave; cos&igrave; 
<PRE>
ESC [ 3 7 ; 4 4 ; 1 m
</PRE>
<P>Nota: Allo stato attuale lo sfondo non pu&ograve; essere del tipo evidente,
quindi non potete avere il giallo (marrone evidente) tranne che per il
primo piano. E'
una limitazione dovuta all'hardware.
<P>
<H2><A NAME="s5">5. Configurazione dei colori su ls</A></H2>

<P>I colori sono:
<PRE>
      0 - nero     4 - blu            3# &egrave; foreground
      1 - rosso    5 - magenta        4# &egrave; background
      2 - verde    6 - ciano
      3 - giallo   7 - bianco         ;1 &egrave; grassetto
</PRE>
<P>Se volete modificare le impostazioni standard di <CODE>ls</CODE>, vi serve una 
copia personale nella vostra home directory, che potete avere con il comando
<BLOCKQUOTE><CODE>
<PRE>
 cd ; dircolors -p > .coloursrc 
</PRE>
</CODE></BLOCKQUOTE>
<P>Dopo aver modificato questo file, che &egrave; molto ben commentato, lo dovete
inserire nella variabile d'ambiente LS_COLORS, che di solito si fa usando
<BLOCKQUOTE><CODE>
<PRE>
eval `dircolors .colourrc`
</PRE>
</CODE></BLOCKQUOTE>
<P>Per avviare questo comando ad ogni login dovete metterlo nel 
vostro .bashrc/.cshrc/.tcshrc (a seconda della shell che
usate). Consultate la pagina man di dircolors(1) per i dettagli.
<P>
<P>
<H2><A NAME="s6">6. Modifica della modalit&agrave; di testo predefinita (bianco su sfondo nero).</A></H2>

<P>
<P>Dovrete dire al codice del driver del terminale che vi serve un altro
default. Non c'&egrave; un modo standard per farlo, ma nel caso di Linux potete
usare il programma setterm. 
<P>
<P>"setterm" usa le informazioni nel database del terminale per impostare gli
attributi. Le selezioni vengono fatte cos&igrave;:
<BLOCKQUOTE><CODE>
<PRE>
setterm -foreground black -background white -store
</PRE>
</CODE></BLOCKQUOTE>
<P>dove lo "-store" oltre alla vera modifica pone come default
anche per la console corrente la selezione fatta.
Questo metodo richiede che il terminale corrente (la variabile
d'ambiente TERM) sia "abbastanza ben" descritta nel database di termcap. Se
setterm per qualche ragione non funziona, ecco alcune alternative:
<P>
<H2>6.1 Xterm</H2>

<P>Almeno uno di questi xterm dovrebbe essere disponibile, ed almeno uno di
essi permette l'uso dei colori.
<P>
<BLOCKQUOTE><CODE>
<PRE>
xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
</PRE>
</CODE></BLOCKQUOTE>
<P>dove 'color_xterm' rende possibile l'uso di 'ls'. Questa particolare scelta
somiglia ai colori usati su un SGI.
<P>
<H2>6.2 La console virtuale</H2>

<P>
<P>Potete modificare il kernel una volta per tutte, fornendo anche un default
di avvio per le console virtuali con una sequenza di escape. Vi consiglio
la patch per il kernel se ne avete compilato uno da soli.
<P>Il file di sorgente del kernel &egrave;
<CODE>/usr/src/linux/drivers/char/console.c</CODE>;
dovete modificare intorno alla linea 1940, cambiando
<P>
<BLOCKQUOTE><CODE>
<PRE>
        def_color       = 0x07;   /* bianco */
        ulcolor         = 0x0f;   /* bianco evidente */
        halfcolor       = 0x08;   /* grigio */
</PRE>
</CODE></BLOCKQUOTE>

come pi&ugrave; appropriato. Io uso bianco su blu con
<BLOCKQUOTE><CODE>
<PRE>
        def_color       = 0x17;   /* bianco */
        ulcolor         = 0x1f;   /* bianco evidente */
        halfcolor       = 0x18;   /* grigio */
</PRE>
</CODE></BLOCKQUOTE>
<P>I numeri sono i codici di attributo usati dalla scheda video espressi in 
esadecimale: la cifra pi&ugrave; significativa (l' "1" nei colori di esempio qui 
sopra) &egrave; lo sfondo; la cifra meno significativa
&egrave; il primo piano. 0 = nero, 1 = blu, 2 = verde, 3 = cyan, 4 = rosso, 5 =
rosa, 6 = marrone/giallo, 7 = bianco. Aggiungeteci 8 per avete colori pi&ugrave;
luminosi. Notate che, nella maggior parte dei casi, uno sfondo luminoso ==
caratteri che lampeggiano e sfondo opaco. (Da
<A HREF="mailto:sjlam1@mda023.cc.monash.edu.au">sjlam1@mda023.cc.monash.edu.au</A>).
<P>
<P>
<P>Potete anche fornire un nuovo default di avvio per una console virtuale,
sulla base dello schermo con la sequenza ANSI non standard (che si trova
ricercando nei sorgenti del kernel)
<P>
<BLOCKQUOTE><CODE>
<PRE>
        ESC [ 8 ]
</PRE>
</CODE></BLOCKQUOTE>
<P>che imposta come default i colori di sfondo e di primo piano correnti.
Poi, la stringa degli Attributi di Reset (ESC [ m) imposta questi
colori al posto del bianco su nero.
<P>In realt&agrave; dovrete visualizzare questa stringa sulla console ogni volta che
riavviate il sistema. A seconda di come usate la vostra macchina Linux,
potete fare in diversi modi:
<P>
<H3>/etc/issue</H3>

<P>
<P>Qui &egrave; dove viene mostrato il "Benvenuti in Linux xx.yy" nella Slackware,
ed &egrave; una buona scelta per macchine stand-alone (e probabilmente &egrave; da
evitare come la peste per gli utenti che si collegano con telnet). Questo
file viene creato all'avvio (su Slackware in /etc/rc.d/rc.S, su Redhat in 
/etc/rc.d/rc.local), e dovreste modificare le linee simili a questa:
<P>
<BLOCKQUOTE><CODE>
<PRE>
  echo ""> /etc/issue
  echo Benvenuti su Linux `/bin/uname -a | /bin/cut -d\  -f3`. >>
/etc/issue
</PRE>
</CODE></BLOCKQUOTE>

to
<BLOCKQUOTE><CODE>
<PRE>
  ESCAPE="&lt;sostituire con un singolo carattere di escape>"
  echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue
  echo Welcome to Linux `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue
</PRE>
</CODE></BLOCKQUOTE>
<P>Questo codice porter&agrave; il cursore in alto a sinistra, imposter&agrave; il colore
(qui &egrave; bianco su blu), salver&agrave; questa scelta e ripulir&agrave; il resto dello
schermo. Le modifiche hanno effetto dopo il riavviamento seguente.
Ricordate di inserire il carattere di escape _letterale_ nel file con C-q
in emacs o con control-v in vi, dato che apparentemente la sh usata per
l'esecuzione di questo script non capisce la sintassi <CODE>/033</CODE>.
<P>
<P>
<H3>/etc/profile or .profile</H3>

<P>
<BLOCKQUOTE><CODE>
<PRE>
  if [ "$TERM" = "console" ]; then
      echo "\033[37;44m\033[8]" #
# or use setterm.
      setterm -foreground white -background blue -store
  fi
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H3>/etc/login or .login</H3>

<P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
  if ( "$TERM" == "console" ) then
    echo "\033[37;44m\033[8]"  
# or use setterm.
      setterm -foreground white -background blue -store
  endif
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H2>6.3 Login remoto</H2>

<P>
<P>Dovreste poter usare il programma setterm come &egrave; stato mostrato sopra. Di
nuovo, questo richiede che la macchina remota sappia abbastanza cose sul
vostro terminale, e che l'emulatore di terminale che fornisce il login
supporti il colore.
Per la mia esperienza le migliori emulazioni di vt100 disponibili al momento
per altri tipi di piattaforma sono:
<UL>
<LI>MS-DOS:         MS-Kermit (un prodotto free, non della Microsoft)</LI>
<LI>Windows 95/NT:  Kermit/95 (shareware)</LI>
<LI>OS/2:           Kermit/95 (shareware).  Notate per&ograve; che il telnet
standard riconosce i colori e pu&ograve; essere configurato localmente.</LI>
</UL>
<P>Per dettagli su Kermit vedere 
<A HREF="http://www.columbia.edu/kermit/">http://www.columbia.edu/kermit/</A>.
<P>
<P>Se trovate una combinazione che funziona, vorrei averla qui.
<P>
<H2><A NAME="s7">7. Software</A></H2>

<P>
<P>Tutte le informazioni che sono descritte qui assumono che abbiate
un'installazione GNU/Linux.
Se avete qualcos'altro (come ad esempio una Sun con X o cose del genere)
potete prendervi e compilarvi il software da soli.
<P>La versione a colori di 'xterm' &egrave; basata sul sorgente standard di xterm
con una patch disponibile su qualsiasi sito X11R6. Si dice che l'xterm 
distribuito con la R6.3 abbia il supporto dei colori nativo, ma io non
l'ho ancora provato.
<BLOCKQUOTE><CODE>
<PRE>
ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6pl5-patch.gz
</PRE>
</CODE></BLOCKQUOTE>
<P>Guardate la doumentazione se usate una versione di X pi&ugrave; vecchia.
<EM>Nota:</EM> Io non ci ho provato!
<P>
<P>`ls' &egrave; nel pacchetto di utilit&agrave; per file della GNU, disponibile da
prep.mit.edu o da uno dei numerosi mirror. Avete bisogno del pacchetto; 
prendete almeno la versione 3.13.
<BLOCKQUOTE><CODE>
<PRE>
ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>Io stesso ho compilato con successo color-ls su Solaris, SunOS e Irix. 
<P>
<P>Apprezzerei del feedback su questo testo. Il mio indirizzo e-mail &egrave; 
<A HREF="mailto:ravn@dit.ou.dk">ravn@dit.ou.dk</A><P>&hyphen;&hyphen;
<P>Thorbj&oslash;rn Ravn Andersen
<P>
<P>Traduzione italiana di Eugenia Franzoni - eugenia@stud.unipg.it
</BODY>
</HTML>