Sì. I terminali ANSI supportano i codici di escape ANSI . Ciascun codice Control Sequence Introducer
( CSI
) nel seguente formato:
ESC[<<<CODE>>>
Il carattere Ascii 27
(il ESC
personaggio) o 1b
in esadecimale, seguito da una parentesi quadra sinistra, quindi da una lettera che indica l'azione da utilizzare.
Si noti che un elenco di ;
parametri separati può essere fornito direttamente prima del <<<CODE>>>
parametro.
Ora i colori usano un sottoinsieme di CSI
codici, i Select Graphic Rendition
codici. Questi sono nella forma:
ESC[<<<SGR>>>m
Il SGR
codice viene passato come parametro a CSI
. Rilevanti per la tua domanda sono i SGR
codici 30-49. I codici 30-39 impostano il colore di primo piano. I codici 40-49 impostano il colore di sfondo.
30 - Foreground Black
31 - Foreground Red
32 - Foreground Green
33 - Foreground Yellow
34 - Foreground Blue
35 - Foreground Magenta
36 - Foreground Cyan
37 - Foreground White
40 - Background Black
41 - Background Red
42 - Background Green
43 - Background Yellow
44 - Background Blue
45 - Background Magenta
46 - Background Cyan
47 - Background White
I codici 38 e 48 sono codici speciali. Questi sono quelli che ti permettono di usare i valori RGB. Il formato per questi è:
ESC[38;2;<r>;<g>;<b>m (Foreground)
ESC[48;2;<r>;<g>;<b>m (Background)
Nota: gli usi alternativi includono \x1b[<3 or 4>8;5;<web safe color index>m
. Con questo utilizzo, esiste una codifica dei colori completamente diversa. Vedere il collegamento nella parte superiore di questa risposta per ulteriori informazioni.
I codici 39 e 49 impostano i colori di primo piano e di sfondo sui valori predefiniti, definiti su base terminale per terminale.
In pratica, i colori 30-37 40-47 sono leggermente diversi da quelli che le loro etichette dicono di essere.
0 - Black
1 - Darker Red
2 - Darker Green
3 - Dark/Yellow or Brown (varies between terminals)
4 - Dark Blue
5 - Dark Magenta
6 - Dark Cyan
7 - Light Grey
Per ottenere colori chiari, si utilizza la SGI per il grassetto, 1
. Il grassetto è un nome fuorviante. Non rende grassetto il carattere. Aumenta effettivamente la luminosità del testo. Con il grassetto applicato i colori diventano:
0 - Dark Grey
1 - Bright Red
2 - Bright Green
3 - Bright Yellow
4 - Bright Blue
5 - Bright Magenta
6 - Bright Cyan
7 - White
Nota: gli ultimi due blocchi di numeri di colori sono rilevanti sia per il primo che per lo sfondo ( <index> + (30 or 40)
).
Per rimuovere tutti gli stili (torna alla modalità predefinita / normale) usare SGR
0.
CSI
i codici non sono tutti grafici. Ad esempio, ESC[2J
cancellerà il tuo terminale. ESC[<y>;<x>H
imposta la posizione del cursore (1-indicizzato). Vedi l'articolo di Wikipedia per maggiori informazioni.
Nota: per testarli, utilizzare echo -e
o printf
.