Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Aggiungere colore

La maggior parte dei programmi di emulazione di terminale risponde a determinate sequenze di caratteri non stampabili per controllare elementi come gli attributi dei caratteri (come il colore, il testo in grassetto e il temuto testo lampeggiante) e la posizione del cursore. Tra poco tratteremo la posizione del cursore, ma prima esamineremo il colore.


Immagine

Confusione terminale

Nei tempi antichi, quando i terminali erano collegati a computer remoti, c'erano molte marche di terminali concorrenti e funzionavano tutti in modo diverso. Avevano tastiere diverse e tutti avevano modi diversi di interpretare le informazioni di controllo. I sistemi Unix e Unix-like hanno due sottosistemi piuttosto complessi per affrontare la babele del controllo del terminale (chiamato termcap ed terminfo). Se guardi nei recessi più profondi delle impostazioni del tuo emulatore di terminale potresti trovare un'impostazione per il tipo di emulazione di terminale.

Nel tentativo di far parlare i terminali in una sorta di linguaggio comune, l'American National Standards Institute (ANSI) ha sviluppato un set standard di sequenze di caratteri per controllare i videoterminali. Gli utenti DOS dei vecchi tempi ricorderanno il AN-SI.SYS file che è stato utilizzato per consentire l'interpretazione di questi codici.


Il colore dei caratteri è controllato inviando l'emulatore di terminale e Codice di escape ANSI incorporato nel flusso di caratteri da visualizzare. Il codice di controllo non viene “stampato” sul display, ma viene interpretato dal terminale come un'istruzione. Come abbiamo visto nella tabella sopra, il \[ ed \] le sequenze vengono utilizzate per incapsulare caratteri non stampabili. Un codice di escape ANSI inizia con un ottale 033 (il codice generato dal tasto di escape), seguito da un attributo carattere opzionale, seguito da un'istruzione. Ad esempio, il codice per impostare il colore del testo su normale (attributo = 0), il testo nero è:

\033[0;30 m

Ecco una tabella dei colori del testo disponibili. Si noti che i colori sono divisi in due gruppi, differenziati dall'applicazione dell'attributo carattere grassetto (1) che crea l'aspetto dei colori “chiari”:


Tabella 13- 2: Sequenze di escape utilizzate per impostare i colori del testo


Sequenza

Colore del testo

Sequenza

Colore del testo

\033[0;30 m

Nero

\033[1;30 m

Crepe Petrolio

\033[0;31 m

Rosso

\033[1;31 m

Luce rossa

\033[0;32 m

Green

\033[1;32 m

Green Light

\033[0;33 m

Brown

\033[1;33 m

Giallo

\033[0;34 m

Blu

\033[1;34 m

Azzurro

\033[0;35 m

Viola

\033[1;35 m

Viola chiaro

Aggiungere colore


\033[0;36 m

Ciano

\033[1;36 m

Ciano chiaro

\033[0;37 m

Grigio Chiaro

\033[1;37 m

White


Proviamo a fare un prompt rosso. Inseriamo il codice di escape all'inizio:



$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "

$

$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "

$


Funziona, ma nota che anche tutto il testo che digitiamo dopo il prompt è rosso. Per risolvere questo problema, aggiungeremo un altro codice di escape alla fine del prompt che dice all'emulatore di terminale di tornare al colore precedente:



$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

$

$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

$


Va meglio!

È anche possibile impostare il colore di sfondo del testo utilizzando i codici elencati di seguito. I colori di sfondo non supportano l'attributo grassetto.


Tabella 13-3: Sequenze di escape utilizzate per impostare il colore di sfondo


Sequenza

Colore di sfondo

Sequenza

Colore di sfondo

\033[0;40 m

Nero

\033[0;44 m

Blu

\033[0;41 m

Rosso

\033[0;45 m

Viola

\033[0;42 m

Green

\033[0;46 m

Ciano

\033[0;43 m

Brown

\033[0;47 m

Grigio Chiaro


Possiamo creare un prompt con sfondo rosso applicando una semplice modifica al primo codice di escape:



$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<io@linuxbox ~>$

$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

<io@linuxbox ~>$


Prova i codici colore e guarda cosa puoi creare!


Immagine

Nota: oltre agli attributi di carattere normale (0) e grassetto (1), al testo possono essere assegnati anche gli attributi di sottolineatura (4), lampeggiante (5) e inverso (7). Tuttavia, nell'interesse del buon gusto, molti emulatori di terminale si rifiutano di onorare l'attributo lampeggiante.


Immagine


Il miglior sistema operativo cloud computing su OnWorks: