Códigos de escape ANSI
Um código de escape ANSI é uma sequência curta de caracteres que um programa imprime para dizer ao terminal para fazer algo além de mostrar esses caracteres — fazer as próximas palavras vermelhas, mover o cursor duas linhas para cima, limpar a tela. O terminal engole a sequência e actua sobre ela, é por isso que um ficheiro de registo cheio deles parece ruído quando o abre num editor.
Todos os códigos abaixo começam com o byte de escape e, com uma excepção, um parêntese de abertura. A coluna de parâmetros dá a parte entre o parêntese e a letra final, que é o que monta no código; a primeira coluna mostra toda a sequência como a escreveria numa shell.
O suporte varia entre terminais, e esta página diz onde importa. As oito cores básicas e negrito funcionam em qualquer lugar; pisca, sublinhado duplo e true colour não.
Anatomia de uma sequência
6Todos os códigos nesta página têm a mesma forma: o byte de escape, um parêntese de abertura, alguns parâmetros e uma letra que diz o que fazer com eles.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e | 0x1B | O byte de escape que inicia cada sequênciaEscrito \e numa shell, \033 em C, \x1b na maioria das linguagens e \u001b em JSON e Java. |
| \e[ | CSI | Control Sequence Introducer — abre um comando parametrizado |
| \e[<n>m | m | Select Graphic Rendition: tudo sobre cor e estilo termina em m |
| \e[1;4;31m | 1;4;31 | Vários parâmetros de uma vez, separados por ponto e vírgulaNegrito, sublinhado e vermelho numa sequência — mais curto que três separadas e efeito idêntico. |
| \e[0m | 0 | Limpa todos os atributos volta ao padrão do terminalEmita isto no final da saída colorida. Um programa que sai sem isto deixa o prompt do utilizador colorido. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Uma hiperligação clicável, nos terminais que a suportamUma sequência OSC, não CSI, e terminada por ESC \ em vez de uma letra. |
Atributos de texto
14O suporte é desigual abaixo dos primeiros cinco. Pisca é ignorado quase em qualquer lugar, e alguns terminais apresentam esmaecido e itálico identicamente.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e[1m | 1 | Negrito ou brilhante |
| \e[2m | 2 | Esmaecido |
| \e[3m | 3 | Itálico |
| \e[4m | 4 | Sublinhado |
| \e[5m | 5 | PiscaAmplamente ignorado; a maioria dos terminais modernos apresentam-no como texto simples. |
| \e[7m | 7 | Inverso: troca primeiro plano e fundo |
| \e[8m | 8 | Oculto: o texto existe mas não é desenhado |
| \e[9m | 9 | Riscado |
| \e[21m | 21 | Sublinhado duploAlguns terminais lêem 21 como "negrito desligado". |
| \e[22m | 22 | Intensidade normal: cancela negrito e esmaecido |
| \e[23m | 23 | Cancela itálico |
| \e[24m | 24 | Cancela sublinhado |
| \e[27m | 27 | Cancela inverso |
| \e[29m | 29 | Cancela riscado |
Cor do texto
17As oito cores padrão e as suas contrapartes brilhantes. O que o leitor vê é a interpretação do tema do seu terminal — "vermelho" é uma ranhura numa paleta, não um valor hex.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e[30m | 30 | Texto preto |
| \e[31m | 31 | Texto vermelho |
| \e[32m | 32 | Texto verde |
| \e[33m | 33 | Texto amarelo |
| \e[34m | 34 | Texto azul |
| \e[35m | 35 | Texto magenta |
| \e[36m | 36 | Texto ciano |
| \e[37m | 37 | Texto branco |
| \e[39m | 39 | Volta à cor de texto padrão |
| \e[90m | 90 | Texto preto brilhante |
| \e[91m | 91 | Texto vermelho brilhante |
| \e[92m | 92 | Texto verde brilhante |
| \e[93m | 93 | Texto amarelo brilhante |
| \e[94m | 94 | Texto azul brilhante |
| \e[95m | 95 | Texto magenta brilhante |
| \e[96m | 96 | Texto ciano brilhante |
| \e[97m | 97 | Texto branco brilhante |
Cor de fundo
17A mesma paleta deslocada por dez. Um código de fundo define a célula atrás do texto e permanece em vigor até ser reposto.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e[40m | 40 | Fundo preto |
| \e[41m | 41 | Fundo vermelho |
| \e[42m | 42 | Fundo verde |
| \e[43m | 43 | Fundo amarelo |
| \e[44m | 44 | Fundo azul |
| \e[45m | 45 | Fundo magenta |
| \e[46m | 46 | Fundo ciano |
| \e[47m | 47 | Fundo branco |
| \e[49m | 49 | Volta ao fundo padrão |
| \e[100m | 100 | Fundo preto brilhante |
| \e[101m | 101 | Fundo vermelho brilhante |
| \e[102m | 102 | Fundo verde brilhante |
| \e[103m | 103 | Fundo amarelo brilhante |
| \e[104m | 104 | Fundo azul brilhante |
| \e[105m | 105 | Fundo magenta brilhante |
| \e[106m | 106 | Fundo ciano brilhante |
| \e[107m | 107 | Fundo branco brilhante |
256 cores e true colour
4Duas extensões do mesmo mecanismo SGR. Ambas são amplamente, mas não universalmente, suportadas; um terminal que não as compreende ignora geralmente a sequência em vez de a imprimir.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Texto na cor da paleta n, 0–2550–15 são os dezasseis acima, 16–231 um cubo de cores 6×6×6, 232–255 uma rampa de escala de cinzentos. |
| \e[48;5;<n>m | 48;5;n | Fundo na cor da paleta n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Texto numa cor exacta de 24-bit |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Fundo numa cor exacta de 24-bit |
Movimento do cursor
11Os movimentos não deslocam nem embrulham: um cursor já no topo da tela ignora um pedido para subir.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e[<n>A | A | Suba n linhas |
| \e[<n>B | B | Desça n linhas |
| \e[<n>C | C | Direita n colunas |
| \e[<n>D | D | Esquerda n colunas |
| \e[<n>E | E | Desça n linhas, até ao início da linha |
| \e[<n>F | F | Suba n linhas, até ao início da linha |
| \e[<n>G | G | Para a coluna n da linha actual |
| \e[<row>;<col>H | H | Para uma linha e coluna absoluta, contando a partir de 1 |
| \e[s | s | Lembre a posição do cursor |
| \e[u | u | Volte para a posição lembrada |
| \e[6n | 6n | Pergunte ao terminal onde está o cursorO terminal responde na entrada padrão como \e[<linha>;<coluna>R — a única sequência aqui que produz uma resposta. |
Apagamento
7O apagamento escreve espaços com a cor de fundo actual; não move o cursor.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e[0J | 0J | Limpar do cursor até ao fim da tela |
| \e[1J | 1J | Limpar do início da tela até ao cursor |
| \e[2J | 2J | Limpar toda a telaO cursor permanece onde estava, é por isso que isto é geralmente emparelhado com \e[H. |
| \e[3J | 3J | Limpar também o buffer de scrollback |
| \e[0K | 0K | Limpar do cursor até ao fim da linha |
| \e[1K | 1K | Limpar do início da linha até ao cursor |
| \e[2K | 2K | Limpar a linha inteira\r\e[2K é a forma habitual de redesenhar uma linha de progresso no lugar. |
Modos de terminal
8Modos privados, marcados pelo ponto de interrogação. Mudam o comportamento do terminal em vez da aparência de um pedaço de texto, e cada um deles tem de ser desligado antes de sair do programa.
| Sequência | Parâmetro | Efeito |
|---|---|---|
| \e[?25l | ?25l | Ocultar o cursor |
| \e[?25h | ?25h | Mostrar o cursor |
| \e[?1049h | ?1049h | Mudar para a tela alternativaO que um programa de ecrã inteiro usa para que o scrollback da shell sobreviva por baixo. |
| \e[?1049l | ?1049l | Mudar de volta para a tela principal |
| \e[?7h | ?7h | Quebrar linhas longas na borda direita |
| \e[?7l | ?7l | Deixar linhas longas extravasar pela borda direita |
| \e[?2004h | ?2004h | Ligar a colagem com suporteTexto colado chega envolvido em \e[200~ e \e[201~, para a shell conseguir distinguir digitação de colagem. |
| \e[?2004l | ?2004l | Desligar a colagem com suporte |