I codici o sequenze di escape ANSI (o sequenze di uscita)[1] sono uno standard di segnalazione per controllare la posizione del cursore, il colore, lo stile dei caratteri e altre opzioni sui terminali di testo video e sugli emulatori di terminale. Alcune sequenze di byte, la maggior parte delle quali iniziano con un carattere di escape ASCII e un carattere parentesi, sono incorporate nel testo. Il terminale interpreta queste sequenze come comandi, anziché come testo da visualizzare alla lettera.
Le sequenze ANSI sono state introdotte negli anni 70 per sostituire le sequenze specifiche del fornitore e si sono diffuse nel mercato delle apparecchiature informatiche all'inizio degli anni 80. Sono utilizzati in applicazioni di sviluppo, scientifiche e commerciali basate su testo, nonché in sistemi di bulletin board system per offrire funzionalità standardizzate.
Sebbene i terminali hardware siano diventati sempre più rari nel 21º secolo, l'importanza dello standard ANSI persiste perché la grande maggioranza degli emulatori di terminale e delle console di comando interpreta almeno una parte dello standard ANSI.
Questa codifica di escape è standardizzata come ECMA-48, ISO/IEC 6429, FIPS 86, ANSI X3.64 e JIS X 0211.
Descrizione
Codici di controllo
Sebbene non facciano tecnicamente parte dello standard, quasi tutti gli utenti assumono alcune funzioni di alcuni caratteri a byte singolo. Viene utilizzato per ridurre la quantità di dati trasmessi o per eseguire alcune funzioni che non sono disponibili dalle sequenze di escape:
Codici di controllo più popolari (elenco non esaustivo)
^
C0
Abbr
Nome
Effetto
^G
7
BEL
Bell
Genera un segnale acustico
^H
8
BS
Backspace
Muove il cursore a sinistra (ma può "avvolgere all'indietro" se il cursore si trova all'inizio della riga).
^I
9
HT
Tab
Muove il cursore a destra sul multiplo successivo di 8.
^J
0x0A
LF
Line Feed
Passa alla riga successiva, scorre il display verso l'alto se si trova nella parte inferiore dello schermo. Di solito non si sposta orizzontalmente, anche se i programmi non dovrebbero fare affidamento su questo.
^L
0x0C
FF
Form Feed
Sposta una stampante all'inizio della pagina successiva. Di solito non si sposta orizzontalmente, anche se i programmi non dovrebbero fare affidamento su questo. L'effetto sui terminali video è variabile.
^M
0x0D
CR
Carriage Return
Muove il cursore alla colonna zero
^[
0x1B
ESC
Escape
Inizia tutte le sequenze di escape
Parametri SGR (Select Graphic Rendition)
I Select Graphic Rendition (SGR) imposta gli attributi di visualizzazione. È possibile impostare più attributi nella stessa sequenza, separati da punto e virgola.[2] Ciascun attributo di visualizzazione rimane attivo fino a quando una successiva occorrenza di SGR non lo ripristina.[3] Se nessun codice viene usato, CSI m è considerato come CSI 0 m (reset / normale).
n
Nome
Note
0
Reset o normale
Tutti gli attributi sono disattivi
1
Grassetto o maggiore intensità
2
Debole, intensità ridotta, o attenuato
Può essere implementato come un carattere fine.[4]
3
Corsivo
Non ampiamente supportato. A volte trattato come inverso o lampeggiante.
4
Sottolineato
Esistono estensioni per questo stile per Kitty, VTE, mintty e iTerm2.[5][6]
5
Lampeggiamento lento
Imposta il lampeggiamento a meno di 150 volte al minuto
6
Lampeggiamento veloce
MS-DOSANSI.SYS, 150+ al minuto. Non ampiamente supportato.
7
Invertito
Scambia i colori di primo piano e di sfondo; emulazione incoerente[7]
8
Occulta o nascondi
Non ampiamente supportato.
9
Barrato
Caratteri leggibili ma contrassegnati come per la cancellazione. Non supportato in Terminal.app
Doppiamente sottolineato; oppure: non in grassetto
Doppiamente sottolineato per ECMA-48,[8] mentre disabilita l'intensità in grassetto su diversi terminali, come nella console del kernal Linux prima della versione 4.17.[9]
22
Intensità normale
Né grassetto né tenue; il colore cambia dove l'intensità è implementata come tale.
23
Né corsivo, né stile gotico
24
Non sottolineato
Né singolarmente né doppiamente sottolineato
25
Non lampeggiante
Disattiva il lampeggiamento
26
Spaziatura proporzionale
ITU T.61 e T.416, non noto per essere utilizzato sui terminali
Implementato come selettore di variazione delle emoji in mintty.[10]
52
Circondato
53
Sovralineato
Non supportato da Terminal.app
54
Né incorniciato o circondato
55
Non sovralineato
90–97
Imposta il colore di primo piano più chiaro
Non standard; originariamente implementato da aixterm[11]
100–107
Imposta un colore di sfondo più chiaro
Colori
La specifica originale aveva solo 8 colori e dava loro solo dei nomi. I parametri SGR 30–37 selezionavano il colore di primo piano, mentre 40–47 selezionavano lo sfondo. Molti terminali hanno implementato il "grassetto" (codice SGR 1) come un colore più luminoso piuttosto che un carattere diverso, fornendo così 8 colori di primo piano aggiuntivi. Di solito non è possibile ottenerli come colori di sfondo, anche se a volte il video inverso (codice SGR 7) lo consente. Esempi: per ottenere lettere nere su sfondo bianco utilizzare ESC[30;47m, per ottenere il rosso utilizzare ESC[31m, per ottenere un rosso brillante utilizzare ESC[1;31m. Per ripristinare i colori ai valori predefiniti, utilizzare ESC[39;49m (non supportato su alcuni terminali) o ripristinare tutti gli attributi con ESC[0m. I terminali più moderno hanno aggiunto la possibilità di specificare direttamente i colori "brillanti" con 90–97 e 100–107.
Quando l'hardware ha iniziato a utilizzare convertitori digitale-analogico (DAC) a 8 bit, diversi software hanno assegnato numeri di colore a 24 bit a questi nomi. La tabella seguente mostra i valori predefiniti inviati al DAC per alcuni hardware e software comuni
^ Colori tipici utilizzati all'avvio dei PC e lasciati in modalità testo, che utilizzava una tabella di colori a 16 voci. I colori sono diversi nelle modalità grafiche EGA/VGA.
^ Nei terminali basati su hardware compatibilie con CGA, come anche ANSI.SYS su DOS, questo colore di primo piano di intensità normale viene visualizzato come arancione. I monitor CGA RGBI contengono dei circuiti per modificare il colore giallo scuro in un colore arancione/marrone riducendo la componente verde. Vedi (EN) ansi art, su sixteencolors.net (archiviato dall'url originale il 25 luglio 2011). come esempio.