Codici di escape ANSI
Un codice di escape ANSI è una breve sequenza di caratteri che un programma stampa per dire al terminale di fare qualcosa di diverso da mostrarli — rendere le prossime parole rosse, spostare il cursore su due righe, cancellare lo schermo. Il terminale inghiotte la sequenza e agisce, per questo un file di log pieno di questi codici sembra rumore quando lo apri in un editor.
Ogni codice sotto inizia con il byte di escape e, con un'eccezione, una parentesi quadra di apertura. La colonna del parametro fornisce la parte tra la parentesi e la lettera finale, il pezzo che assembli nel codice; la prima colonna mostra l'intera sequenza come la scriveresti in una shell.
Il supporto varia tra i terminali e questa pagina lo dice dove importa. Gli otto colori di base e il grassetto funzionano ovunque; il lampeggiamento, il doppio sottolineatura e il colore vero no.
Anatomia di una sequenza
6Ogni codice su questa pagina ha la stessa forma: il byte di escape, una parentesi quadra di apertura, alcuni parametri e una lettera che dice cosa farne.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e | 0x1B | Il byte di escape che inizia ogni sequenzaScritto \e in una shell, \033 in C, \x1b nella maggior parte dei linguaggi e \u001b in JSON e Java. |
| \e[ | CSI | Control Sequence Introducer — apre un comando parametrizzato |
| \e[<n>m | m | Select Graphic Rendition: tutto ciò che riguarda il colore e lo stile termina con m |
| \e[1;4;31m | 1;4;31 | Diversi parametri alla volta, separati da punti e virgolaGrassetto, sottolineato e rosso in una sequenza — più breve di tre separate e identico nell'effetto. |
| \e[0m | 0 | Cancella ogni attributo torna al valore predefinito del terminaleEmetti questo alla fine dell'output colorato. Un programma che esce senza di esso lascia il prompt dell'utente colorato. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Un collegamento ipertestuale cliccabile, nei terminali che lo supportanoUna sequenza OSC piuttosto che una CSI e terminata da ESC \ invece di una lettera. |
Attributi di testo
14Il supporto è irregolare al di sotto dei primi cinque. Il lampeggiamento è ignorato quasi ovunque e alcuni terminali rendono il dim e l'italico identicamente.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e[1m | 1 | Grassetto o brillante |
| \e[2m | 2 | Attenuato |
| \e[3m | 3 | Italico |
| \e[4m | 4 | Sottolineato |
| \e[5m | 5 | LampeggiamentoAmpiamente ignorato; i terminali moderni lo rendono come testo semplice. |
| \e[7m | 7 | Inverso: scambia primo piano e sfondo |
| \e[8m | 8 | Nascosto: il testo c'è ma non è disegnato |
| \e[9m | 9 | Barrato |
| \e[21m | 21 | Doppio sottolineaturaAlcuni terminali leggono 21 come "disattiva grassetto". |
| \e[22m | 22 | Intensità normale: cancella grassetto e attenuato |
| \e[23m | 23 | Cancella italico |
| \e[24m | 24 | Cancella sottolineatura |
| \e[27m | 27 | Cancella inverso |
| \e[29m | 29 | Cancella barrato |
Colore del testo
17Gli otto colori standard e i loro equivalenti brillanti. Quello che il lettore vede effettivamente è l'interpretazione del suo tema terminale — il "rosso" è uno slot in una tavolozza, non un valore esadecimale.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e[30m | 30 | Testo nero |
| \e[31m | 31 | Testo rosso |
| \e[32m | 32 | Testo verde |
| \e[33m | 33 | Testo giallo |
| \e[34m | 34 | Testo blu |
| \e[35m | 35 | Testo magenta |
| \e[36m | 36 | Testo ciano |
| \e[37m | 37 | Testo bianco |
| \e[39m | 39 | Torna al colore di testo predefinito |
| \e[90m | 90 | Testo nero brillante |
| \e[91m | 91 | Testo rosso brillante |
| \e[92m | 92 | Testo verde brillante |
| \e[93m | 93 | Testo giallo brillante |
| \e[94m | 94 | Testo blu brillante |
| \e[95m | 95 | Testo magenta brillante |
| \e[96m | 96 | Testo ciano brillante |
| \e[97m | 97 | Testo bianco brillante |
Colore dello sfondo
17La stessa tavolozza spostata di dieci. Un codice di sfondo imposta la cella dietro il testo e rimane in vigore finché non viene ripristinato.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e[40m | 40 | Sfondo nero |
| \e[41m | 41 | Sfondo rosso |
| \e[42m | 42 | Sfondo verde |
| \e[43m | 43 | Sfondo giallo |
| \e[44m | 44 | Sfondo blu |
| \e[45m | 45 | Sfondo magenta |
| \e[46m | 46 | Sfondo ciano |
| \e[47m | 47 | Sfondo bianco |
| \e[49m | 49 | Torna allo sfondo predefinito |
| \e[100m | 100 | Sfondo nero brillante |
| \e[101m | 101 | Sfondo rosso brillante |
| \e[102m | 102 | Sfondo verde brillante |
| \e[103m | 103 | Sfondo giallo brillante |
| \e[104m | 104 | Sfondo blu brillante |
| \e[105m | 105 | Sfondo magenta brillante |
| \e[106m | 106 | Sfondo ciano brillante |
| \e[107m | 107 | Sfondo bianco brillante |
256 colori e colore vero
4Due estensioni dello stesso meccanismo SGR. Entrambe sono ampiamente ma non universalmente supportate; un terminale che non le capisce di solito ignora la sequenza piuttosto che stamparla.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Testo nel colore della tavolozza n, 0–2550–15 sono i sedici sopra, 16–231 un cubo di colore 6×6×6, 232–255 una rampa in scala di grigi. |
| \e[48;5;<n>m | 48;5;n | Sfondo nel colore della tavolozza n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Testo in un colore preciso a 24 bit |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Sfondo in un colore preciso a 24 bit |
Movimento del cursore
11Gli spostamenti non scorrono e non vanno a capo: un cursore già in cima allo schermo ignora una richiesta di andare verso l'alto.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e[<n>A | A | Su n righe |
| \e[<n>B | B | Giù n righe |
| \e[<n>C | C | Destra n colonne |
| \e[<n>D | D | Sinistra n colonne |
| \e[<n>E | E | Giù n righe, all'inizio della riga |
| \e[<n>F | F | Su n righe, all'inizio della riga |
| \e[<n>G | G | Alla colonna n della riga corrente |
| \e[<row>;<col>H | H | A una riga e colonna assoluta, contando da 1 |
| \e[s | s | Ricorda la posizione del cursore |
| \e[u | u | Torna alla posizione ricordata |
| \e[6n | 6n | Chiedi al terminale dove sia il cursoreIl terminale risponde sull'input standard come \e[<riga>;<colonna>R — l'unica sequenza qui che produce una risposta. |
Cancellazione
7La cancellazione scrive spazi con il colore di sfondo corrente; non sposta il cursore.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e[0J | 0J | Cancella dal cursore alla fine dello schermo |
| \e[1J | 1J | Cancella dall'inizio dello schermo al cursore |
| \e[2J | 2J | Cancella l'intero schermoIl cursore rimane dove era, per questo di solito si abbina a \e[H. |
| \e[3J | 3J | Cancella anche lo storico di scorrimento |
| \e[0K | 0K | Cancella dal cursore alla fine della riga |
| \e[1K | 1K | Cancella dall'inizio della riga al cursore |
| \e[2K | 2K | Cancella l'intera riga\r\e[2K è il modo usuale per ridisegnare una riga di progresso in posizione. |
Modalità terminale
8Modalità private, contrassegnate dal punto interrogativo. Cambiano il comportamento del terminale piuttosto che l'aspetto di un pezzo di testo, e ognuna deve essere disattivata prima che il programma termini.
| Sequenza | Parametro | Effetto |
|---|---|---|
| \e[?25l | ?25l | Nascondi il cursore |
| \e[?25h | ?25h | Mostra il cursore |
| \e[?1049h | ?1049h | Passa allo schermo alternativoQuello che usa un programma a schermo intero per far sopravvivere lo storico della shell sotto di esso. |
| \e[?1049l | ?1049l | Torna allo schermo principale |
| \e[?7h | ?7h | Avvolgi le righe lunghe al bordo destro |
| \e[?7l | ?7l | Lascia che le righe lunghe fuoriescono dal bordo destro |
| \e[?2004h | ?2004h | Abilita incolla tra parentesiIl testo incollato arriva avvolto in \e[200~ e \e[201~, così una shell può distinguere la digitazione dall'incollaggio. |
| \e[?2004l | ?2004l | Disabilita incolla tra parentesi |