Saltar al contenido

Lista de secuencias de escape de color ANSI

Solución:

Las secuencias de escape ANSI que está buscando son el subconjunto Seleccionar representación gráfica. Todos estos tienen la forma

 033[XXXm

where XXX is a series of semicolon-separated parameters.

To say, make text red, bold, and underlined (we’ll discuss many other options below) in C you might write:

printf("33[31;1;4mHello33[0m");

In C++ you’d use

std::cout<<"33[31;1;4mHello33[0m";

In Python3 you’d use

print("33[31;1;4mHello33[0m")

and in Bash you’d use

echo -e "33[31;1;4mHello33[0m"

where the first part makes the text red (31), bold (1), underlined (4) and the last part clears all this (0).

As described in the table below, there are a large number of text properties you can set, such as boldness, font, underlining, &c. (Isn’t it silly that StackOverflow doesn’t allow you to put proper tables in answers?)

Font Effects

Code Effect Note
0 Reset / Normal all attributes off
1 Bold or increased intensity
2 Faint (decreased intensity) Not widely supported.
3 Italic Not widely supported. Sometimes treated as inverse.
4 Underline
5 Slow Blink less than 150 per minute
6 Rapid Blink MS-DOS ANSI.SYS; 150+ per minute; not widely supported
7 [[reverse video]] intercambiar colores de primer plano y de fondo
8 Encubrir No cuenta con un amplio apoyo.
9 Tachado Caracteres legibles, pero marcados para su eliminación. No cuenta con un amplio apoyo.
10 Fuente principal (predeterminada)
11-19 Fuente alternativa Seleccionar fuente alternativa n-10
20 Fraktur casi nunca apoyado
21 Negrita o subrayado doble Negrita no cuenta con un amplio apoyo; el subrayado doble casi nunca se admite.
22 Intensidad o color normal Ni audaz ni débil
23 No cursiva, no Fraktur
24 Subrayar fuera Sin subrayado simple o doble
25 Parpadear
27 Inverso desactivado
28 Revelar ocultar
29 No tachado
30–37 Establecer color de primer plano Consulte la tabla de colores a continuación.
38 Establecer color de primer plano Los siguientes argumentos son 5;<n> o 2;<r>;<g>;<b>, vea abajo
39 Color de primer plano predeterminado implementación definida (según estándar)
40–47 Establecer color de fondo Consulte la tabla de colores a continuación.
48 Establecer color de fondo Los siguientes argumentos son 5;<n> o 2;<r>;<g>;<b>, vea abajo
49 Color de fondo predeterminado implementación definida (según estándar)
51 Enmarcado
52 Rodeado
53 Subrayado
54 No enmarcado ni rodeado
55 No subrayado
60 ideograma subrayado casi nunca apoyado
61 ideograma doble subrayado casi nunca apoyado
62 ideograma overline casi nunca apoyado
63 ideograma doble superposición casi nunca apoyado
64 marcado de estrés ideograma casi nunca apoyado
sesenta y cinco atributos de ideograma desactivados restablecer los efectos de todos los 60-64
90–97 Establecer color de primer plano brillante aixterm (no en estándar)
100-107 Establecer color de fondo brillante aixterm (no en estándar)

Colores de 2 bits

¡Ya tienes esto!

Colores de 4 bits

Los estándares que implementan los colores de los terminales comenzaron con opciones limitadas (4 bits). La siguiente tabla enumera los valores RGB de los colores de fondo y primer plano utilizados para estos por una variedad de emuladores de terminal:

Tabla de colores ANSI implementada por varios emuladores de terminal

Usando lo anterior, puede hacer texto rojo sobre un fondo verde (pero ¿por qué?) Usando:

33[31;42m

11 colores (un interludio)

En su libro “Términos básicos de color: su universalidad y evolución”, Brent Berlin y Paul Kay utilizaron datos recopilados de veinte idiomas diferentes de una variedad de familias de idiomas para identificar once posibles categorías de colores básicos: blanco, negro, rojo, verde, amarillo, azul, marrón, violeta, rosa, naranja y gris.

Berlin y Kay descubrieron que, en idiomas con menos del máximo de once categorías de color, los colores seguían un patrón evolutivo específico. Este patrón es el siguiente:

  1. Todos los idiomas contienen términos para negro (colores fríos) y blanco (colores brillantes).
  2. Si un idioma contiene tres términos, entonces contiene un término para rojo.
  3. Si un idioma contiene cuatro términos, entonces contiene un término para verde o amarillo (pero no para ambos).
  4. Si un idioma contiene cinco términos, entonces contiene términos tanto para verde como para amarillo.
  5. Si un idioma contiene seis términos, entonces contiene un término para el azul.
  6. Si un idioma contiene siete términos, entonces contiene un término para marrón.
  7. Si un idioma contiene ocho o más términos, entonces contiene términos para violeta, rosa, naranja o gris.

Esta puede ser la razón por la que la historia Beowulf solo contiene los colores negro, blanco y rojo. También puede ser la razón Biblia no contiene el color azul. Homero Odisea contiene negro casi 200 veces y blanco unas 100 veces. El rojo aparece 15 veces, mientras que el amarillo y el verde aparecen solo 10 veces. (Más información aquí)

Las diferencias entre idiomas también son interesantes: tenga en cuenta la profusión de palabras de distintos colores utilizadas por el inglés y el chino. Sin embargo, profundizar en estos lenguajes muestra que cada uno usa el color de distintas formas. (Más información)

Nombres de colores chinos vs ingleses.  Imagen adaptada de "muyueh.com"

En términos generales, la denominación, el uso y la agrupación de colores en los lenguajes humanos es fascinante. Ahora, volvamos al espectáculo.

Colores de 8 bits (256)

La tecnología avanzó y las tablas de 256 colores preseleccionados estuvieron disponibles, como se muestra a continuación.

Modo de color de 256 bits para secuencias de escape ANSI

Usando estos anteriores, puede hacer un texto rosa como este:

33[38;5;206m     #That is, 33[38;5;<FG COLOR>m

Y crea un fondo azul temprano en la mañana usando

33[48;5;57m      #That is, 33[48;5;<BG COLOR>m

Y, por supuesto, puedes combinar estos:

33[38;5;206;48;5;57m

Los colores de 8 bits están organizados así:

0x00-0x07:  standard colors (same as the 4-bit colours)
0x08-0x0F:  high intensity colors
0x10-0xE7:  6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
0xE8-0xFF:  grayscale from black to white in 24 steps

TODOS LOS COLORES

Ahora vivimos en el futuro y el espectro RGB completo está disponible mediante:

33[38;2;<r>;<g>;<b>m     #Select RGB foreground color
33[48;2;<r>;<g>;<b>m     #Select RGB background color

De modo que puede poner texto rosado sobre un fondo pardusco usando

33[38;2;255;82;197;48;2;155;106;0mHello

El soporte para terminales de “color verdadero” se enumera aquí.

Gran parte de lo anterior se extrajo de la página de Wikipedia “Código de escape ANSI”.

Un guión útil para recordarse a sí mismo

Dado que a menudo estoy en la posición de tratar de recordar qué colores son qué, tengo un script útil llamado: ~/bin/ansi_colours:

#!/usr/bin/python

print "\033[XXm"

for i in range(30,37+1):
    print "33[%dm%dtt33[%dm%d" % (i,i,i+60,i+60);

print "33[39m\033[39m - Reset colour"
print "\033[2K - Clear Line"
print "\033[<L>;<C>H OR \033[<L>;<C>f puts the cursor at line L and column C."
print "\033[<N>A Move the cursor up N lines"
print "\033[<N>B Move the cursor down N lines"
print "\033[<N>C Move the cursor forward N columns"
print "\033[<N>D Move the cursor backward N columns"
print "\033[2J Clear the screen, move to (0,0)"
print "\033[K Erase to end of line"
print "\033[s Save cursor position"
print "\033[u Restore cursor position"
print " "
print "\033[4m  Underline on"
print "\033[24m Underline off"
print "\033[1m  Bold on"
print "\033[21m Bold off"

Esto imprime

Colores ANSI simples

Qué tal si:

ECMA-48 – Funciones de control para juegos de caracteres codificados, 5ª edición (junio de 1991) – Un estándar que define los códigos de control de color, que aparentemente también es compatible con xterm.

SGR 38 y 48 fueron originalmente reservados por ECMA-48, pero se desarrollaron unos años más tarde en un estándar conjunto de ITU, IEC e ISO, que viene en varias partes y que (entre muchas otras cosas) documenta el SGR 38/48 secuencias de control para color directo y color indexado:

  • Tecnología de la información – Arquitectura de documento abierta (ODA) y formato de intercambio: estructuras de documento. T.412. Unión Internacional de Telecomunicaciones.
  • Tecnología de la información – Arquitectura de documento abierta (ODA) y formato de intercambio: arquitecturas de contenido de caracteres. T.416. Unión Internacional de Telecomunicaciones.
  • Tecnología de la información: arquitectura de documento abierta (ODA) y formato de intercambio: arquitecturas de contenido de caracteres. ISO / IEC 8613-6: 1994. Organización Internacional de Normalización.

Hay una columna para xterm en esta tabla en la página de Wikipedia para códigos de escape ANSI

Hay algunos más interesantes junto con información relacionada.

  • http://wiki.bash-hackers.org/scripting/terminalcodes
  • http://www.termsys.demon.co.uk/vtansi.htm (muerto; instantánea de archive.org)
  • http://invisible-island.net/xterm/ctlseqs/ctlseqs.html
  • http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/c327.html
  • https://wiki.archlinux.org/index.php/Color_Bash_Prompt
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *