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 ESCcarácter) o 1ben 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 CSIcódigos, los Select Graphic Renditioncódigos. Estos están en la forma:
ESC[<<<SGR>>>m
El SGRcódigo se pasa como parámetro el CSI. Relevantes para su pregunta son los SGRcó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 SGR0.
CSILos códigos no son todos gráficos. Por ejemplo, ESC[2Jborrará su terminal. ESC[<y>;<x>Hestablece la posición del cursor (1 indexado). Vea el artículo de Wikipedia para más información.
Nota: para probar esto, use echo -eo printf.