imprimir texto en color usando echo

Sé que para imprimir un texto en color usando echo, 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 el código de color rojo y el número 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 esta: ¿qué significa \e y [ y m (después de 31) significa exactamente aquí?
Leí en la página de manual que \ e es escape, pero no entendí lo que significa.

Comentarios

  • En en general, se escapan los caracteres que tienen un significado especial en el contexto técnico actual. Por ejemplo, las cadenas suelen escribirse 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 cuanto a este caso (su pregunta ), ' tendrá que esperar una respuesta mejor.
  • hermannn.com/programs/terminal_fonts

Respuesta

Son parte de los «Elementos de secuencia» de Secuencias de escape ANSI también conocidas como secuencias CSI ECMA-48 que se adoptaron originalmente en 1976

Más específicamente el

es el « Introductor de secuencia de control »

Escriba man console_codes en casi cualquier distribución * nix para ver los códigos y algunos documentos.

Comentarios

  • man 4 console_code no man console_code: En mi ubuntu
  • El nombre de la página del manual termina con un " s " así que " man console_codes " debe mostrar la página correcta.

Respuesta

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" 

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

Respuesta

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

Para comenzar, escriba esto en su consola:

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

El primer carácter es un carácter de escape, que parece 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 en ese color hasta que vuelvas a recuperar escribiendo esto:

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

Respuesta

\e es la abreviatura del carácter Escape. el <ESC>[ y el m son los marcadores para el comienzo y el final de las secuencias de control de color ANSI, que son un subconjunto del 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 (p. Ej., Mover el cursor a la línea; borrar al final de la línea, regresar el cursor al ubicación, etcétera).

Deja una respuesta

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