2011-01-30 72 views
58

En la mayoría de terminales (con la excepción de cmd.exe de Windows, por supuesto) es posible colorear de salida utilizando la secuencia de escape \033 ANSI.Lista de secuencias de escape de color ANSI

Ahora estoy buscando una lista de todos los colores y opciones (como luminoso y parpadeante) compatibles.

Como es probable que haya algunas diferencias entre los terminales que soporten ellos: Estoy interesado principalmente en aquellas secuencias compatible con los terminales compatibles con xterm.

+1

Cada una de las respuestas tiene uno o más defectos graves. Comprensiblemente, ninguno fue aceptado. –

+0

@ThomasDickey, ¿Podría señalar los defectos en las respuestas votadas más frecuentes para que el resto de nosotros sepamos dónde están las dificultades? – merlin2011

Respuesta

55

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

\033[XXXm 

donde XXX es una serie de parámetros separada por comas.

decir, hacer que el texto rojo, negrita, subrayado y (discutiremos muchas otras opciones a continuación) en C puede escribir:

printf("\033[31;1;4mHello\033[0m"); 

En C++ que tendría que utilizar

std::cout<<"\033[31;1;4mHello\033[0m"; 
en

python3 que tendría que utilizar

print("\033[31;1;4mHello\033[0m") 

y en Bash que tendría que utilizar

echo -e "\033[31;1;4mHello\033[0m" 

donde la primera parte hace que el texto de color rojo (31), negrita (1), subrayado (4) y la última parte borra todo esto (0).

Como se describe en la tabla siguiente, hay una gran cantidad de propiedades de texto que puede establecer, como negrita, fuente, subrayado, & c. (¿No es silly que stackoverflow no permite poner las tablas apropiadas en las respuestas?)

fuente Efectos

╔══════════╦════════════════════════════════╦═════════════════════════════════════════════════════════════════════════╗ 
║ 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]]    ║ swap foreground and background colors         ║ 
║ 8  ║ Conceal      ║ Not widely supported.             ║ 
║ 9  ║ Crossed-out     ║ Characters legible, but marked for deletion. Not widely supported. ║ 
║ 10  ║ Primary(default) font   ║                   ║ 
║ 11–19 ║ Alternate font    ║ Select alternate font `n-10`           ║ 
║ 20  ║ Fraktur      ║ hardly ever supported             ║ 
║ 21  ║ Bold off or Double Underline ║ Bold off not widely supported; double underline hardly ever supported. ║ 
║ 22  ║ Normal color or intensity  ║ Neither bold nor faint             ║ 
║ 23  ║ Not italic, not Fraktur  ║                   ║ 
║ 24  ║ Underline off     ║ Not singly or doubly underlined          ║ 
║ 25  ║ Blink off      ║                   ║ 
║ 27  ║ Inverse off     ║                   ║ 
║ 28  ║ Reveal      ║ conceal off               ║ 
║ 29  ║ Not crossed out    ║                   ║ 
║ 30–37 ║ Set foreground color   ║ See color table below             ║ 
║ 38  ║ Set foreground color   ║ Next arguments are `5;n` or `2;r;g;b`, see below      ║ 
║ 39  ║ Default foreground color  ║ implementation defined (according to standard)       ║ 
║ 40–47 ║ Set background color   ║ See color table below             ║ 
║ 48  ║ Set background color   ║ Next arguments are `5;n` or `2;r;g;b`, see below      ║ 
║ 49  ║ Default background color  ║ implementation defined (according to standard)       ║ 
║ 51  ║ Framed      ║                   ║ 
║ 52  ║ Encircled      ║                   ║ 
║ 53  ║ Overlined      ║                   ║ 
║ 54  ║ Not framed or encircled  ║                   ║ 
║ 55  ║ Not overlined     ║                   ║ 
║ 60  ║ ideogram underline   ║ hardly ever supported             ║ 
║ 61  ║ ideogram double underline  ║ hardly ever supported             ║ 
║ 62  ║ ideogram overline    ║ hardly ever supported             ║ 
║ 63  ║ ideogram double overline  ║ hardly ever supported             ║ 
║ 64  ║ ideogram stress marking  ║ hardly ever supported             ║ 
║ 65  ║ ideogram attributes off  ║ reset the effects of all of 60-64          ║ 
║ 90–97 ║ Set bright foreground color ║ aixterm (not in standard)            ║ 
║ 100–107 ║ Set bright background color ║ aixterm (not in standard)            ║ 
╚══════════╩════════════════════════════════╩═════════════════════════════════════════════════════════════════════════╝ 

Colores de 2 bits

Hay que esto ya!

Colores de 4 bits

Las normas de ejecución colores terminales comenzaron con opciones limitadas (4 bits). La siguiente tabla muestra los valores RGB de colores de fondo y primer plano utilizados para estos por una variedad de emuladores de terminal:

Table of ANSI colours implemented by various terminal emulators

Utilizando lo anterior, se puede hacer que el texto de color rojo sobre un fondo verde (pero ¿por qué?) usando:

\033[31;42m 

11 Colores (un interludio)

En su libro "Términos color básico: su universalidad y evolución", Brent Berlin y Paul Kay utilizan los datos recogidos de veinte idiomas diferentes entre una gama de l Identifique las once categorías básicas de colores posibles: blanco, negro, rojo, verde, amarillo, azul, marrón, violeta, rosado, naranja y gris.

Berlin y Kay descubrieron que, en idiomas con menos 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 el 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 para ambos, verde y amarillo.
  5. Si un idioma contiene seis términos, entonces contiene un término para 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 historia de Beowulf sólo contiene los colores negro, blanco y rojo. También es posible que la Biblia no contenga el color azul. Homer Odyssey contiene negro casi 200 veces y blanco alrededor de 100 veces. El rojo aparece 15 veces, mientras que el amarillo y el verde aparecen solo 10 veces. (More information here)

Las diferencias entre los idiomas también son interesantes: tenga en cuenta la profusión de las distintas palabras de color utilizadas por English vs. Chinese. Sin embargo, profundizar en estos idiomas muestra que cada uno usa el color de distintas maneras. (More information)

Chinese vs English colour names. Image adapted from "muyueh.com"

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

de 8 bits (256)

colores

tecnología avanzada, y las tablas de 256 colores preseleccionados llegó a estar disponible, como se muestra a continuación.

256-bit colour mode for ANSI escape sequences

El uso de estos anterior, se puede hacer que el texto de color rosa, así:

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

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

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

Y, por supuesto, puede combinar estos:

\033[38;5;206;48;5;57m 

Los colores de 8 bits están dispuestas de este modo:

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 estamos viviendo en el futuro, y el espectro RGB está disponible usando:

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

Para que pueda poner el texto rosado en un fondo pardusco usando

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

El soporte para terminales de "color verdadero" se encuentra en la lista here.

Gran parte de lo anterior se extrae de la página de Wikipedia "ANSI escape code".

+1

wow ... eso es casi todo sobre los colores allí mismo ... +1 de mí :) – mocqoro

46

Esta página tiene un gran resumen:

ANSI Escape sequences

+8

¿Por qué tantas páginas en secuencias de escape xterm ignoran los códigos +20? es decir, [4m está subrayado, [24m está subrayado desactivado. [1m está en negrita, [21m está en negrita. – Sniggerfardimungus

+0

@Sniggerfardimungus, mirando esta entrada de wikipedia aquí, http://en.wikipedia.org/wiki/ANSI_escape_code, esa sección de códigos parece un poco desordenada. No soy un conocedor, pero sospecho que muchos de los primeros tipos de pantallas habrían tenido problemas al mostrar Fraktur, y tal vez incluso con doble subrayado. También considere en esta sección de +20, el doble subrayado también es audaz. Sospecho que para una compatibilidad máxima, la mayoría de las implementaciones de pantallas ANSI evitan esta sección por completo. –

+1

@MarkGerolimatos, simplemente busqué en Google "secuencias de escape de ANSI", que es casi verbatum en el título de la pregunta. El enlace que proporcioné tiene 3 enlaces hacia abajo: P –

2

Se relaciona absolutamente con su terminal. VTE no admite el parpadeo. Si usa gnome-terminal, tilda, guake, terminator, xfce4-terminal y así sucesivamente según VTE, no tendrá el parpadeo.
Si usa desea utilizar el parpadeo en VTE, debe usar el comando xterm.
Puede utilizar infocmp comando con el nombre del terminal:

#infocmp vt100 
#infocmp xterm 
#infocmp vte 

Por ejemplo:

# infocmp vte 
# Reconstructed via infocmp from file: /usr/share/terminfo/v/vte 
vte|VTE aka GNOME Terminal, 
    am, bce, mir, msgr, xenl, 
    colors#8, cols#80, it#8, lines#24, ncv#16, pairs#64, 
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
    bel=^G, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J, 
    cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
    cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, 
    cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
    cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, 
    dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, 
    el=\E[K, enacs=\E)0, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, 
    hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, 
    is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, 
    kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, 
    kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, 
    kb2=\E[E, kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, 
    kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kf1=\EOP, 
    kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P, 
    kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~, 
    kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, 
    kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~, 
    kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, 
    kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, 
    kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~, 
    kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, 
    kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf4=\EOS, 
    kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~, 
    kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~, 
    kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~, 
    kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R, 
    kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~, 
    kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~, 
    kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~, 
    kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~, 
    kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khome=\EOH, 
    kich1=\E[2~, kind=\E[1;2B, kmous=\E[M, knp=\E[6~, 
    kpp=\E[5~, kri=\E[1;2A, kslt=\E[4~, meml=\El, memu=\Em, 
    op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, ritm=\E[23m, 
    rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, 
    rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=\Ec, 
    rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h, 
    sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
    sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e\017%;, 
    sgr0=\E[0m\017, sitm=\E[3m, smacs=^N, smam=\E[?7h, 
    smcup=\E7\E[?47h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, 
    smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, 
    u8=\E[?%[;]c, u9=\E[c, vpa=\E[%i%p1%dd, 
Cuestiones relacionadas