Sí. Los terminales ANSI admiten códigos de escape ANSI . Cada Control Sequence Introducer
( CSI
) Código en el siguiente formato:
ESC[<<<CODE>>>
El carácter Ascii 27
(el ESC
carácter) o 1b
en hexadecimal, seguido de un corchete izquierdo y luego una letra que indica la acción que se utilizará.
Tenga en cuenta que ;
se puede proporcionar una lista de parámetros separados directamente antes del <<<CODE>>>
parámetro.
Ahora, los colores usan un subconjunto de CSI
códigos, los Select Graphic Rendition
códigos. Estos están en la forma:
ESC[<<<SGR>>>m
El SGR
código se pasa como parámetro el CSI
. Relevantes para su pregunta son los SGR
códigos 30-49. Los códigos 30-39 establecen el color de primer plano. Los códigos 40-49 establecen el color de fondo.
30 - Foreground Black
31 - Foreground Red
32 - Foreground Green
33 - Foreground Yellow
34 - Foreground Blue
35 - Foreground Magenta
36 - Foreground Cyan
37 - Foreground White
40 - Background Black
41 - Background Red
42 - Background Green
43 - Background Yellow
44 - Background Blue
45 - Background Magenta
46 - Background Cyan
47 - Background White
Los códigos 38 y 48 son códigos especiales. Estos son los que le permiten usar valores RGB. El formato para estos es:
ESC[38;2;<r>;<g>;<b>m (Foreground)
ESC[48;2;<r>;<g>;<b>m (Background)
Nota: los usos alternativos incluyen \x1b[<3 or 4>8;5;<web safe color index>m
. Con este uso, hay una codificación de color completamente diferente. Consulte el enlace en la parte superior de esta respuesta para obtener más información.
Los códigos 39 y 49 establecen los colores de primer plano y de fondo a sus valores predeterminados, que se definen terminal por terminal.
En la práctica, los colores 30-37 40-47 son ligeramente diferentes de lo que sus etiquetas dicen que son.
0 - Black
1 - Darker Red
2 - Darker Green
3 - Dark/Yellow or Brown (varies between terminals)
4 - Dark Blue
5 - Dark Magenta
6 - Dark Cyan
7 - Light Grey
Para obtener los colores claros, se utiliza la SGI para negrita, 1
. Negrita es un nombre engañoso. No pone la fuente en negrita. Realmente aumenta el brillo del texto. Con negrita aplicada los colores se convierten en:
0 - Dark Grey
1 - Bright Red
2 - Bright Green
3 - Bright Yellow
4 - Bright Blue
5 - Bright Magenta
6 - Bright Cyan
7 - White
Aviso: los dos últimos bloques de números de colores son relevantes tanto para fore- como para background ( <index> + (30 or 40)
).
Para eliminar todos los estilos (volver al modo predeterminado / normal) use SGR
0.
CSI
Los códigos no son todos gráficos. Por ejemplo, ESC[2J
borrará su terminal. ESC[<y>;<x>H
establece la posición del cursor (1 indexado). Vea el artículo de Wikipedia para más información.
Nota: para probar esto, use echo -e
o printf
.