FreeToGenerate.com

Renderiza salida de terminal pegada, descifra cada secuencia de escape y nombra el estándar del que sale cada código, porque salen de tres. No se sube nada.

Pega cualquier cosa con secuencias de escape dentro: un log de compilación, un git diff, la salida coloreada de unas pruebas. Nada sale de tu navegador.

Prueba una:

Cómo se ve

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

Los primeros dieciséis colores son los que ponga el tema de tu terminal, así que esto muestra un juego habitual y no la respuesta. Del 16 en adelante todo lo fija la aritmética y es exacto.

Los códigos que lleva

CódigoLo defineSignifica
1ECMA-48negrita
32ECMA-48verde
0ECMA-48restablecer todo
31ECMA-48rojo
38ISO 8613-6color de frente extendido
2ECMA-48tenue

Lo que conviene saber de esta salida

  • Los códigos 38, 48 y 58 vienen de ISO 8613-6, no de ECMA-48. xterm los describe como marcados en la quinta edición de ECMA-48 como reservados para futura normalización, así que los códigos que hay detrás de todo color de 256 y de todo color verdadero están, en el estándar que todo el mundo cita, reservados y no definidos.

  • Este color extendido usa punto y coma entre sus subparámetros. La referencia de xterm llama a eso la forma heredada y a los dos puntos la estándar, pero el punto y coma es lo que emite cualquier herramienta y lo que los renderizadores populares saben leer.

Constrúyela, en las dos grafías

Dos puntos: lo que la referencia llama estándar
\e[1;38:2::255:135:0m
Punto y coma: lo que emiten las herramientas
\e[1;38;2;255;135;0m

El mismo color escrito como lo hace la referencia y como lo hace todo lo demás. Ninguna está mal; simplemente no son intercambiables, y una de las dos no sobrevivirá al renderizador donde la pegues.

Los 55 códigos

CódigoLo defineSignifica
0ECMA-48restablecer todo
1ECMA-48negrita
2ECMA-48tenue
3ECMA-48cursiva
4ECMA-48subrayado
5ECMA-48parpadeo
6ECMA-48parpadeo rápido
7ECMA-48intercambiar frente y fondo
8ECMA-48ocultar
9ECMA-48tachado
21ECMA-48subrayado doble
22ECMA-48ni negrita ni tenue
23ECMA-48sin cursiva
24ECMA-48sin subrayado
25ECMA-48sin parpadeo
27ECMA-48sin intercambiar
28ECMA-48sin ocultar
29ECMA-48sin tachado
30ECMA-48negro
31ECMA-48rojo
32ECMA-48verde
33ECMA-48amarillo
34ECMA-48azul
35ECMA-48magenta
36ECMA-48cian
37ECMA-48blanco
38ISO 8613-6color de frente extendido
39ECMA-48color de frente por defecto
40ECMA-48negro
41ECMA-48rojo
42ECMA-48verde
43ECMA-48amarillo
44ECMA-48azul
45ECMA-48magenta
46ECMA-48cian
47ECMA-48blanco
48ISO 8613-6color de fondo extendido
49ECMA-48color de fondo por defecto
58ISO 8613-6color de subrayado extendido
90aixtermnegro brillante
91aixtermrojo brillante
92aixtermverde brillante
93aixtermamarillo brillante
94aixtermazul brillante
95aixtermmagenta brillante
96aixtermcian brillante
97aixtermblanco brillante
100aixtermnegro brillante
101aixtermrojo brillante
102aixtermverde brillante
103aixtermamarillo brillante
104aixtermazul brillante
105aixtermmagenta brillante
106aixtermcian brillante
107aixtermblanco brillante

55 / 55 mostrados

Agrupados por el estándar que define cada uno, que es la columna que aplanan todas las tablas publicadas.

Todo esto corre en tu navegador. No se sube nada.

También disponible en: English · Português · Français · العربية

Códigos de escape ANSI: qué hace cada uno y qué estándar lo define

Pega salida coloreada para verla renderizada y explicada, o construye una secuencia y mira cómo divergen las dos grafías del mismo color.

Qué son los códigos de escape ANSI

Una secuencia de escape es una tira de caracteres corrientes que la terminal lee como una instrucción en vez de imprimirla. Casi todas las que uno se encuentra empiezan por el carácter de escape seguido de un corchete de apertura, luego unos números y luego una letra que dice qué significaban esos números. Cuando esa letra final es m, la secuencia es SGR —Select Graphic Rendition— y los números son los códigos de color y atributo que todo el mundo llama códigos de color ANSI.

El mecanismo es simple y con estado: un código enciende algo y sigue encendido hasta que otro lo apaga. Por eso olvidar el reinicio al final de una cadena coloreada deja el resto del prompt del color equivocado, y por eso los códigos casi siempre se escriben por parejas.

Lo que no es simple es de dónde vienen. Todo lo que se publica sobre ellos los presenta en una única tabla plana, y son tres estándares vestidos con una sola sintaxis. Los colores y atributos normales son de ECMA-48. Los colores brillantes son una extensión del aixterm de IBM. Los códigos de 256 colores y de color verdadero salen de ISO 8613-6, y la referencia de xterm los describe como marcados en la quinta edición de ECMA-48 como reservados para futura normalización: o sea que los dos códigos a los que más recurre cualquiera están, en el estándar que todo el mundo cita para ellos, reservados y no definidos.

Cómo se usa

  1. Pega salida de terminal o elige un ejemplo. Los ejemplos cubren un log de compilación, el mismo color escrito de la forma estándar, brillantes frente a normales, una secuencia totalmente portable y otra con dos cosas mal.
  2. Lee la vista previa y la tabla de códigos. La vista previa muestra lo que dibujaría una terminal. Debajo aparece cada código SGR encontrado con el estándar que lo define y lo que significa, y las notas explican lo que conviene saber de lo que has pegado.
  3. Construye una y compara las grafías. Activa negrita, cursiva y subrayado, pon un color, y la misma instrucción aparece dos veces: una con dos puntos y otra con punto y coma. Significan lo mismo y no son intercambiables.

El separador que nadie escribe de la forma estándar

Los códigos de color extendido llevan subparámetros: 38 dice que viene un color de frente, luego 5 y un índice de la paleta de 256, o 2 y tres valores de canal para color verdadero. La referencia de xterm escribe esos subparámetros separados por dos puntos, y dice sin rodeos que admite tanto los dos puntos, que llama estándar, como el punto y coma, que llama heredado. Todos los tutoriales, todas las bibliotecas y todas las herramientas emiten la forma con punto y coma.

No es una cuestión de gusto, y el coste recae sobre la que elijas. Leyendo el código de los dos renderizadores de JavaScript más usados para esto, ambos parten los parámetros solo por el punto y coma —uno hace un split directo, el otro recorta los punto y coma finales y parte igual— y ninguno contiene dos puntos en ninguna parte de su tratamiento de parámetros. Así que la grafía que la referencia llama estándar es exactamente la que esas bibliotecas descartan en silencio: el color desaparece y el texto se dibuja sin estilo, sin ningún error por ningún lado.

Hay una segunda víctima en la misma línea. La forma con dos puntos del color verdadero lleva un identificador de espacio de color antes del valor de rojo, que se escribe normalmente vacío, de modo que la grafía completa tiene un hueco que parece una errata. La forma con punto y coma no tiene hueco alguno para ese campo, y por eso casi nadie sabe que existe.

El resumen honesto es que no hay ninguna grafía que sea a la vez estándar y ampliamente admitida, y por eso esta página te dice qué compromiso está haciendo tu secuencia en lugar de decirte que una de las dos es la correcta. Si escribes para una terminal, la forma con punto y coma es la que esperan las terminales. Si escribes para una especificación, la forma con dos puntos es la que dice.

Lo que esta página no puede decirte

Los primeros dieciséis colores no los fija nada. Los códigos del 30 al 37 nombran un color, no un valor: cómo se ve realmente el rojo es lo que ponga el tema de la terminal de quien mira, y la misma salida es una imagen distinta en dos ventanas contiguas. La vista previa de aquí usa un juego habitual para que haya algo que mirar, y eso es una demostración, no una respuesta. Del índice 16 en adelante la cosa cambia: el cubo de 216 colores y la rampa de 24 grises están definidos por aritmética, así que esos sí son exactos.

La frase sobre reservados para futura normalización es la caracterización que hace xterm de ECMA-48, no una cita de ECMA-48. ECMA-48 se publica como un PDF que se ha resistido a la extracción de texto todas las veces que se ha intentado aquí, así que en lugar de parafrasear un documento que no se ha podido leer, la atribución se queda donde puede comprobarse: con la referencia que hace la afirmación.

Solo se interpreta SGR. Una secuencia que mueve el cursor, limpia la pantalla o pone el título de la ventana se reconoce, se señala y se deja en paz, porque renderizarla significaría simular una terminal entera en vez de explicar un código de color. Las secuencias que no empiezan por el par escape y corchete —los viejos controles de un solo carácter y las órdenes al sistema operativo que ponen un título— quedan fuera de lo que esto lee.

Por último, esto describe qué significan los códigos, no qué hace con ellos tu terminal concreta. El parpadeo se ignora casi en todas partes. Lo tenue lo ignoran unas y otras lo dibujan como un color más apagado. El subrayado doble es irregular. Una terminal puede no hacer absolutamente nada con un código que no implementa, y la mayoría hace exactamente eso, en silencio.

¿Por qué es gratis?

Analizar secuencias de escape es manejo de cadenas y corre en tu navegador. No hay servidor en medio, así que no hay nada que cobrar ni cuenta que crear.

No se sube nada, lo que aquí importa más de lo habitual: la salida de terminal que uno pega suele llevar rutas, nombres de máquina y algún que otro token. Recarga la página y lo habrá olvidado todo.