FreeToGenerate.com

Renderiza saída de terminal colada, decodifica cada sequência de escape e nomeia o padrão de onde vem cada código — porque vêm de três. Nada é enviado.

Cole qualquer coisa com sequências de escape dentro: um log de build, um git diff, a saída colorida de testes. Nada sai do seu navegador.

Experimente:

Como fica

PASS  src/parse.test.ts
FAIL  src/render.test.ts
  3 passed, 1 failed

As primeiras dezesseis cores são o que o tema do seu terminal definir, então isto mostra um conjunto comum e não a resposta. De 16 para cima tudo é fixado por aritmética e é exato.

Os códigos que ela traz

CódigoDefinido porSignifica
1ECMA-48negrito
32ECMA-48verde
0ECMA-48redefinir tudo
31ECMA-48vermelho
38ISO 8613-6cor de frente estendida
2ECMA-48fraco

O que saber sobre esta saída

  • Os códigos 38, 48 e 58 vêm do ISO 8613-6, não do ECMA-48. O xterm os descreve como marcados na quinta edição do ECMA-48 como reservados para padronização futura — ou seja, os códigos por trás de toda cor de 256 e de toda cor verdadeira estão, no padrão que todo mundo cita, reservados e não definidos.

  • Esta cor estendida usa ponto e vírgula entre os subparâmetros. A referência do xterm chama isso de forma legada e os dois-pontos de padrão — mas o ponto e vírgula é o que toda ferramenta emite, e o que os renderizadores populares conseguem ler.

Monte uma, nas duas grafias

Dois-pontos: o que a referência chama de padrão
\e[1;38:2::255:135:0m
Ponto e vírgula: o que as ferramentas emitem
\e[1;38;2;255;135;0m

A mesma cor escrita como a referência escreve e como todo o resto escreve. Nenhuma está errada; elas simplesmente não são intercambiáveis, e uma das duas não sobrevive ao renderizador onde você colar.

Os 55 códigos

CódigoDefinido porSignifica
0ECMA-48redefinir tudo
1ECMA-48negrito
2ECMA-48fraco
3ECMA-48itálico
4ECMA-48sublinhado
5ECMA-48piscar
6ECMA-48piscar rápido
7ECMA-48trocar frente e fundo
8ECMA-48ocultar
9ECMA-48riscado
21ECMA-48sublinhado duplo
22ECMA-48nem negrito nem fraco
23ECMA-48sem itálico
24ECMA-48sem sublinhado
25ECMA-48sem piscar
27ECMA-48sem troca
28ECMA-48sem ocultar
29ECMA-48sem riscado
30ECMA-48preto
31ECMA-48vermelho
32ECMA-48verde
33ECMA-48amarelo
34ECMA-48azul
35ECMA-48magenta
36ECMA-48ciano
37ECMA-48branco
38ISO 8613-6cor de frente estendida
39ECMA-48cor de frente padrão
40ECMA-48preto
41ECMA-48vermelho
42ECMA-48verde
43ECMA-48amarelo
44ECMA-48azul
45ECMA-48magenta
46ECMA-48ciano
47ECMA-48branco
48ISO 8613-6cor de fundo estendida
49ECMA-48cor de fundo padrão
58ISO 8613-6cor de sublinhado estendida
90aixtermpreto brilhante
91aixtermvermelho brilhante
92aixtermverde brilhante
93aixtermamarelo brilhante
94aixtermazul brilhante
95aixtermmagenta brilhante
96aixtermciano brilhante
97aixtermbranco brilhante
100aixtermpreto brilhante
101aixtermvermelho brilhante
102aixtermverde brilhante
103aixtermamarelo brilhante
104aixtermazul brilhante
105aixtermmagenta brilhante
106aixtermciano brilhante
107aixtermbranco brilhante

55 / 55 exibidos

Agrupados pelo padrão que define cada um, que é a coluna achatada por toda tabela publicada.

Tudo isto roda no seu navegador. Nada é enviado.

Também disponível em: English · Español · Français · العربية

Códigos de escape ANSI: o que cada um faz e qual padrão o define

Cole saída colorida para vê-la renderizada e explicada, ou monte uma sequência e veja as duas grafias da mesma cor divergirem.

O que são os códigos de escape ANSI

Uma sequência de escape é um trecho de caracteres comuns que o terminal lê como instrução em vez de imprimir. Quase todas as que aparecem começam pelo caractere de escape seguido de um colchete de abertura, depois alguns números e por fim uma letra que diz o que aqueles números significavam. Quando essa letra final é m, a sequência é SGR — Select Graphic Rendition — e os números são os códigos de cor e atributo que todo mundo chama de códigos de cor ANSI.

O mecanismo é simples e com estado: um código liga alguma coisa, e ela fica ligada até outro desligar. É por isso que esquecer o reset no fim de uma string colorida deixa o resto do prompt na cor errada, e por isso os códigos quase sempre são escritos aos pares.

O que não é simples é de onde eles vêm. Tudo que se publica sobre isso apresenta uma tabela única e achatada, e são três padrões vestindo uma sintaxe só. As cores e atributos comuns são do ECMA-48. As cores brilhantes são uma extensão do aixterm da IBM. Os códigos de 256 cores e de cor verdadeira vêm do ISO 8613-6, e a referência do xterm os descreve como marcados na quinta edição do ECMA-48 como reservados para padronização futura — ou seja, os dois códigos a que mais se recorre estão, no padrão que todo mundo cita para eles, reservados e não definidos.

Como usar

  1. Cole saída de terminal ou escolha um exemplo. Os exemplos cobrem um log de build, a mesma cor escrita do jeito padrão, brilhantes contra comuns, uma sequência totalmente portátil e outra com duas coisas erradas.
  2. Leia a prévia e a tabela de códigos. A prévia mostra o que um terminal desenharia. Abaixo, cada código SGR encontrado aparece com o padrão que o define e o que significa, e as notas explicam o que vale saber sobre o que você colou.
  3. Monte uma e compare as grafias. Ative negrito, itálico e sublinhado, escolha uma cor, e a mesma instrução aparece duas vezes: uma com dois-pontos e outra com ponto e vírgula. Significam a mesma coisa e não são intercambiáveis.

O separador que ninguém escreve do jeito padrão

Os códigos de cor estendida levam subparâmetros: 38 diz que vem uma cor de frente, depois 5 e um índice da paleta de 256, ou 2 e três valores de canal para cor verdadeira. A referência do xterm escreve esses subparâmetros separados por dois-pontos e afirma sem rodeios que aceita tanto os dois-pontos, que chama de padrão, quanto o ponto e vírgula, que chama de legado. Todo tutorial, toda biblioteca e toda ferramenta emitem a forma com ponto e vírgula.

Não é questão de gosto, e o custo recai sobre a que você escolher. Lendo o código dos dois renderizadores JavaScript mais usados para isso, ambos separam parâmetros apenas por ponto e vírgula — um faz um split direto, o outro apara os pontos e vírgulas finais e separa igual — e nenhum contém dois-pontos em lugar nenhum do tratamento de parâmetros. Então a grafia que a referência chama de padrão é exatamente a que essas bibliotecas descartam em silêncio: a cor some e o texto sai sem estilo, sem erro algum em canto nenhum.

Há uma segunda vítima na mesma linha. A forma com dois-pontos da cor verdadeira carrega um identificador de espaço de cor antes do valor de vermelho, normalmente escrito vazio, de modo que a grafia completa tem uma lacuna que parece erro de digitação. A forma com ponto e vírgula não tem espaço nenhum para esse campo, e é por isso que quase ninguém sabe que ele existe.

O resumo honesto é que não existe grafia que seja ao mesmo tempo padrão e amplamente suportada, e por isso esta página diz qual troca a sua sequência está fazendo em vez de dizer que uma das duas é a certa. Se você escreve para um terminal, a forma com ponto e vírgula é a que os terminais esperam. Se escreve para uma especificação, a forma com dois-pontos é a que ela diz.

O que esta página não consegue dizer

As primeiras dezesseis cores não são fixadas por nada. Os códigos de 30 a 37 nomeiam uma cor, não um valor — como o vermelho realmente aparece é o que o tema do terminal de quem lê definir, e a mesma saída é uma imagem diferente em duas janelas lado a lado. A prévia aqui usa um conjunto comum para haver algo a ver, e isso é uma demonstração, não uma resposta. Do índice 16 para cima muda: o cubo de 216 cores e a rampa de 24 cinzas são definidos por aritmética, então esses são exatos.

A frase sobre reservados para padronização futura é a caracterização que o xterm faz do ECMA-48, não uma citação dele. O ECMA-48 é publicado como um PDF que resistiu à extração de texto todas as vezes que foi tentada aqui, então, em vez de parafrasear um documento que não pôde ser lido, a atribuição fica onde pode ser conferida: com a referência que faz a afirmação.

Só o SGR é interpretado. Uma sequência que move o cursor, limpa a tela ou define o título da janela é reconhecida, relatada e deixada em paz, porque renderizá-la significaria simular um terminal inteiro em vez de explicar um código de cor. Sequências que não começam com o par escape e colchete — os antigos controles de um caractere só e os comandos ao sistema operacional que definem título — ficam fora do que isto lê.

Por fim, isto descreve o que os códigos significam, não o que o seu terminal faz com eles. Piscar é ignorado quase em todo lugar. O fraco é ignorado por alguns e desenhado como uma cor mais apagada por outros. O sublinhado duplo é irregular. Um terminal pode não fazer absolutamente nada com um código que não implementa, e a maioria faz exatamente isso, caladamente.

Por que é grátis?

Analisar sequências de escape é manipulação de strings, e roda no seu navegador. Não há servidor no caminho, então não há o que cobrar nem conta a criar.

Nada é enviado, o que aqui importa mais que o normal: saída de terminal colada costuma trazer caminhos, nomes de máquina e um token ou outro. Recarregue a página e ela terá esquecido tudo.