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 aspetti come gli attributi dei caratteri (come il colore, il grassetto e il temuto testo lampeggiante) e la posizione del cursore. Tratteremo la posizione del cursore tra poco, ma prima diamo un'occhiata al colore.


Immagine

Confusione terminale

Nell'antichità, quando i terminali venivano collegati a computer remoti, esistevano molte marche di terminali concorrenti e funzionavano tutti in modo diverso. Avevano tastiere diverse e avevano tutti modi diversi di interpretare le informazioni di controllo. I sistemi Unix e simili a Unix hanno due sottosistemi piuttosto complessi per gestire la babele del controllo dei terminali (chiamati termcap e 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 un linguaggio comune, l'American National Standards Institute (ANSI) ha sviluppato un set standard di sequenze di caratteri per controllare i terminali video. I vecchi utenti DOS ricorderanno il AN-SI.SYS file utilizzato per consentire l'interpretazione di questi codici.


Il colore del carattere è controllato inviando all'emulatore di terminale un 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 \[ e \] Le sequenze vengono utilizzate per incapsulare caratteri non stampabili. Un codice di escape ANSI inizia con un ottale 033 (il codice generato dal tasto Esc), seguito da un attributo carattere opzionale, seguito da un'istruzione. Ad esempio, il codice per impostare il colore del testo su normale (attributo = 0), testo nero è:

\033[0;30m

Ecco una tabella dei colori di testo disponibili. Si noti che i colori sono divisi in due gruppi, differenziati dall'applicazione dell'attributo grassetto (1) che crea l'aspetto di 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;30m

Nero

\033[1;30m

Crepe Petrolio

\033[0;31m

Rosso

\033[1;31m

Luce rossa

\033[0;32m

Verde

\033[1;32m

Green Light

\033[0;33m

Marrone

\033[1;33m

Giallo

\033[0;34m

Blu

\033[1;34m

Azzurro

\033[0;35m

Viola

\033[1;35m

Viola chiaro

Aggiungere colore


\033[0;36m

Ciano

\033[1;36m

Ciano chiaro

\033[0;37m

Grigio Chiaro

\033[1;37m

Bianco


Proviamo a creare un prompt rosso. Inseriremo il codice di escape all'inizio:



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

$

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

$


Funziona, ma nota che tutto il testo che digitiamo dopo il prompt è anch'esso rosso. Per risolvere questo problema, aggiungeremo un altro codice di escape alla fine del prompt che indica 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\] "

$


Meglio così!

È 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;40m

Nero

\033[0;44m

Blu

\033[0;41m

Rosso

\033[0;45m

Viola

\033[0;42m

Verde

\033[0;46m

Ciano

\033[0;43m

Marrone

\033[0;47m

Grigio Chiaro


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



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

<me@linuxbox ~>$

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

<me@linuxbox ~>$


Prova i codici colore e scopri cosa riesci a 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, per motivi di buon gusto, molti emulatori di terminale si rifiutano di rispettare l'attributo lampeggiante.


Immagine


Il miglior sistema operativo cloud computing su OnWorks: