File: Colour-ls

package info (click to toggle)
doc-linux-it 2000.01-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 8,136 kB
  • ctags: 19
  • sloc: perl: 249; makefile: 50; sh: 42
file content (462 lines) | stat: -rw-r--r-- 13,041 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
  I colori sui terminali Linux
  Thorbjrn Ravn Andersen, ravn@dit.ou.dk
  v1.4, 7 August 1997

  La maggior parte delle distribuzioni Linux hanno un comando 'ls' per
  elencare il contenuto di una directory, l'output del quale pu essere
  migliorato e reso pi chiaro usando colori diversi. Ma configurare
  questa possibilit secondo il proprio gusto pu risultare un compito
  non banale. Questo documento spiega i vari aspetti del problema, i
  metodi per modificare i colori cambiando la configurazione del soft
  ware 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  disponibile anche su
  <http://www.mip.ou.dk/~ravn/colour-ls>.

  1.  Introduzione

  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.

  Dato che la console di testo di Linux permette l'uso dei colori, l'ls
  originale della GNU  stato prontamente modificato per restituire
  informazioni a colori, ed  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.

  Questa versione  stata modificata in modo sostanziale rispetto al
  documento iniziale, e comprende anche informazioni sugli xterm e su
  come apportare alcune modifiche al kernel.


  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.



  2.  Inizio veloce per gli impazienti

  Se avete una distribuzione di Linux nuova, apportate queste modifiche
  ai file indicati nella vostra home directory. Hanno effetto dopo il
  login successivo.



        ~/.bashrc:
            alias ls="ls --color"

        ~/.cshrc:
            alias ls 'ls --color'




  Ecco fatto!

  Potete anche fare ``eval `dircolors $HOME/.colourrc`'', per avere i
  vostri colori personali. Questo file viene creato con dircolors -p
  >$HOME/.colourrc'' ed  ben commentato per poter essere modificato in
  seguito.


  3.  Ma ce l'ho?

  Per prima cosa dovete controllare se avete una versione di ls che sa
  come usare i colori in modo corretto. Provate questo comando su una
  console di testo di Linux (funziona anche un xterm):



        % ls --color





  (il %  il prompt della shell): Se vi d un messaggio di errore che
  dice che ls non capisce l'opzione dovete installare una versione pi
  recente del pacchetto fileutils della GNU.  Se non avete il pacchetto
  di aggiornamento per la vostra distribuzione, prendete i sorgenti dal
  mirror GNU pi vicino e installate direttamente da quelli.

  Se non vi d un messaggio di errore, avete una versione di ls che
  capisce il comando. Sfortunatamente, alcune delle versioni pi vecchie
  incluse nella Slackware (e forse altre) erano bacate. L'ls compreso
  nella Redhat 4.1  la versione 3.13 che  a posto.



        % ls --version
        ls - GNU fileutils-3.13





  Se date il comando ``ls -- color'' 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 ls, il programma originale per gli xterm non permetteva
  l'uso dei colori dai programmi al suo interno, ma le versioni pi
  recenti lo fanno. Se la versione che avete non supporta i colori
  dovreste cercarne una pi recente come descritto alla fine di questo
  documento. Nel frattempo passate ad una console di testo e continuate
  da l.



  4.  Tra quali colori si pu scegliere

  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.







  #!/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




  Il colore del primo piano viene elencato a sinistra, e il colore di
  sfondo nella casella. Se volete caratteri pi evidenti aggiungete un
  "1" ai parametri; ad esempio blu su bianco sar "37;44;1". La sequenza
  completa di selezione ANSI  cos

  ESC [ 3 7 ; 4 4 ; 1 m



  Nota: Allo stato attuale lo sfondo non pu essere del tipo evidente,
  quindi non potete avere il giallo (marrone evidente) tranne che per il
  primo piano. E' una limitazione dovuta all'hardware.


  5.  Configurazione dei colori su ls

  I colori sono:

        0 - nero     4 - blu            3#  foreground
        1 - rosso    5 - magenta        4#  background
        2 - verde    6 - ciano
        3 - giallo   7 - bianco         ;1  grassetto



  Se volete modificare le impostazioni standard di ls, vi serve una
  copia personale nella vostra home directory, che potete avere con il
  comando


        cd ; dircolors -p > .coloursrc




  Dopo aver modificato questo file, che  molto ben commentato, lo
  dovete inserire nella variabile d'ambiente LS_COLORS, che di solito si
  fa usando


       eval `dircolors .colourrc`



  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.



  6.  Modifica della modalit di testo predefinita (bianco su sfondo
  nero).


  Dovrete dire al codice del driver del terminale che vi serve un altro
  default. Non c' un modo standard per farlo, ma nel caso di Linux
  potete usare il programma setterm.


  "setterm" usa le informazioni nel database del terminale per impostare
  gli attributi. Le selezioni vengono fatte cos:


       setterm -foreground black -background white -store




  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:


  6.1.  Xterm

  Almeno uno di questi xterm dovrebbe essere disponibile, ed almeno uno
  di essi permette l'uso dei colori.



       xterm -fg white -bg blue4
       color_xterm -fg white -bg blue4




  dove 'color_xterm' rende possibile l'uso di 'ls'. Questa particolare
  scelta somiglia ai colori usati su un SGI.


  6.2.  La console virtuale


  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.

  Il file di sorgente del kernel 
  /usr/src/linux/drivers/char/console.c; dovete modificare intorno alla
  linea 1940, cambiando



               def_color       = 0x07;   /* bianco */
               ulcolor         = 0x0f;   /* bianco evidente */
               halfcolor       = 0x08;   /* grigio */


  come pi appropriato. Io uso bianco su blu con


               def_color       = 0x17;   /* bianco */
               ulcolor         = 0x1f;   /* bianco evidente */
               halfcolor       = 0x18;   /* grigio */




  I numeri sono i codici di attributo usati dalla scheda video espressi
  in esadecimale: la cifra pi significativa (l' "1" nei colori di
  esempio qui sopra)  lo sfondo; la cifra meno significativa  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
  luminosi. Notate che, nella maggior parte dei casi, uno sfondo
  luminoso == caratteri che lampeggiano e sfondo opaco. (Da
  sjlam1@mda023.cc.monash.edu.au).



  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)



               ESC [ 8 ]




  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.

  In realt 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:


  6.2.1.  /etc/issue


  Qui  dove viene mostrato il "Benvenuti in Linux xx.yy" nella
  Slackware, ed  una buona scelta per macchine stand-alone (e
  probabilmente  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:



         echo ""> /etc/issue
         echo Benvenuti su Linux `/bin/uname -a | /bin/cut -d\  -f3`. >>
       /etc/issue




  to





    ESCAPE="<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




  Questo codice porter il cursore in alto a sinistra, imposter il
  colore (qui  bianco su blu), salver questa scelta e ripulir 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 /033.



  6.2.2.  /etc/profile or .profile



         if [ "$TERM" = "console" ]; then
             echo "\033[37;44m\033[8]" #
       # or use setterm.
             setterm -foreground white -background blue -store
         fi





  6.2.3.  /etc/login or .login




         if ( "$TERM" == "console" ) then
           echo "\033[37;44m\033[8]"
       # or use setterm.
             setterm -foreground white -background blue -store
         endif





  6.3.  Login remoto


  Dovreste poter usare il programma setterm come  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:

    MS-DOS:         MS-Kermit (un prodotto free, non della Microsoft)

    Windows 95/NT:  Kermit/95 (shareware)

    OS/2:           Kermit/95 (shareware).  Notate per che il telnet
     standard riconosce i colori e pu essere configurato localmente.

  Per dettagli su Kermit vedere  <http://www.columbia.edu/kermit/>.


  Se trovate una combinazione che funziona, vorrei averla qui.


  7.  Software


  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.

  La versione a colori di 'xterm'  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.


       ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6pl5-patch.gz




  Guardate la doumentazione se usate una versione di X pi vecchia.
  Nota: Io non ci ho provato!


  `ls'  nel pacchetto di utilit 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.


       ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz





  Io stesso ho compilato con successo color-ls su Solaris, SunOS e Irix.


  Apprezzerei del feedback su questo testo. Il mio indirizzo e-mail 
  ravn@dit.ou.dk

  --

  Thorbjrn Ravn Andersen


  Traduzione italiana di Eugenia Franzoni - eugenia@stud.unipg.it