imprimir texto en color usando echo

25

Sé que para imprimir un texto en color usando eco, por ejemplo, color rojo, el código es: echo -e "\e[1;31m This is red text \e[0m"
y sé que en este ejemplo, 31 es código de color rojo y la cantidad de otros colores es:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

y para los colores de fondo, el número es de 40 a 47

Mi pregunta es: ¿qué significa \ey [y m(después de 31) significa exactamente aquí?
Leí en la página del manual que es escape, pero no entendí lo que significa.

M0εiπ
fuente
En general, escapa a los caracteres que tienen significados especiales en el contexto técnico actual. Por ejemplo, las cadenas a menudo se escriben entre comillas, "así". Pero si desea comillas dentro de una cadena, debe escapar de esos caracteres para que se interpreten literalmente y no como delimitadores. Por ejemplo, echo "She said \"Hi\""en este caso (su pregunta), tendrá que esperar una mejor respuesta.
Emanuel Berg

Respuestas:

13

Forman parte de los 'Elementos de secuencia' de las secuencias de escape ANSI, también conocidas como secuencias ECMA-48 CSI que se adoptaron originalmente en 1976

Más específicamente, [es el ' Introductor de secuencia de control '

Escriba man console_codescasi cualquier * nix distro para ver los códigos y algunos documentos.

Anthony Hatzopoulos
fuente
man 4 console_codeno man console_code: en mi ubuntu
0x6773
El nombre de la página del manual termina con una "s", por lo que "man console_codes" debería mostrar la página correcta.
Mikko Rantalainen
4

Para ser precisos, los códigos de color se definen a continuación:

Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"

Closing = "\033[m" or "\e[0m"

Básicamente, es la forma en que diferentes terminales interpretan los códigos de color y subtitula su texto dentro de estos elementos. Es una forma extraña de hacer que el terminal entienda lo que quieres decir (como HexCodes o Binary ..)

Ann Jawn
fuente
2

Encontré una buena explicación aquí (al menos, agradable para mí :-) ). No estoy seguro de si te será útil.

Para comenzar, escriba esto en su consola:

echo "^[[0;31;40mIn Color"

El primer carácter es un carácter de escape, que se parece a dos caracteres, ^ y [. Para poder imprimir esto, debe presionar CTRL + V y luego la tecla ESC. Todos los demás caracteres son caracteres imprimibles normales, por lo que verá la cadena en color en rojo. El tipo permanece ese color hasta que vuelva a aparecer escribiendo esto:

Son códigos de escape para establecer los modos de color en el terminal. Es solo que cuando se imprime con caracteres normales, se ven así.

BorrajaX
fuente
2

\ees la abreviatura del personaje de Escape. the <ESC>[y the mson los marcadores para el comienzo y el final de las secuencias de control de color ANSI, que son un subconjunto de control de terminal ANSI secuenciado. La mayoría de ellos comienzan con <ESC>[, seguido de un número, seguido de una letra que indica qué función se está implementando (por ejemplo, mover el cursor a la línea; borrar al final de la línea, regresar el cursor a la ubicación guardada, etc.).

DopeGhoti
fuente