Muchas veces cuando programamos en la etapa temprana de un proyecto, la salida principal a la que acudimos para hacer un debug es la consola, terminal o como lo llames, generalmente desde el típico hola mundo, hasta mensajes de error que hacen parte de un log, sin embargo todos estos mensajes aparecen con el mismo color por defecto de nuestra terminal, qué tal si quisiéramos imprimir mensajes de advertencia y mensajes de error con distintos colores con el fin de poder identificarlos rápidamente en pantalla o simplemente para facilitarle la vida un poco a nuestros usuarios, entonces has llegado al post correcto.
¿Sabías que los colores en la terminal no es más que una simple letra?, pues es así, esta vez te daré las claves para interpretar los colores y que puedas cambiar los colores a tu antojo.
Así como en lenguajes de bajo nivel se reservan ciertos #caracteresEspeciales para realizar operaciones en lenguaje de maquina como la asignación de variables, sumar o restar un valor, concatenar entre otros, también hay caracteres especiales para colorear los textos, la mayoría de lenguajes usan el estándar ANSI-C porque la mayoría de los lenguajes nuevos nacen del lenguaje C, incluso las terminales de comandos, sistemas operativos completos están escritos en el fondo con lenguaje C.
La mayoría de terminales heredan algunos comandos del lenguaje C como `printf` que sirve para imprimir en pantalla un texto que queramos escribir
Como vemos imprime un valor detrás del usuario, distinto del comando `echo` que escribe el mensaje delante del usuario.
Como mi terminal tiene un tema voy a entrar como super usuario ya que lo que voy a hacer no tendría el efecto deseado para los cambios de color que pienso hacer.
Lo que haremos es imprimir un caracter de escape con printf.
printf '\e[31m' # Imprime el color rojo
Repasando un poco, un caracter de escape es un simbolo especial que usamos para que el intérprete o el compilador omita cierto caracter, generalmente otros simbolos '\' como parte del lenguaje de programación y lo incluya como un texto plano, como la mayoría de lenguajes usan caracteres como comillas, corchetes, llaves, paréntesis, saltos de línea, saltos de tabulador, distintas clases de espacios.
también existen caracteres especiales como es el caso de este `\e` que solo es soportado en la terminal Bash, que a su vez es un resumen del caractér `\033` de ANSI-C en digito octal 33 o a si vez es `\x1b` digito hexadecimal 1b.
Código de colores
La siguiente tabla muestra el código de colores que puede usar en la terminal, también es posible combinar varias características separando los valores por ';' siempre y cuando no entre en contradicción.
printf '\e[1;5;7;33;41m' # negrilla;parpadeo;inverso;naranja;bg rojo
Color / Característica | Frente | Fondo |
normal | \e[0m | |
negrilla | \e[1m | |
cursiva | \e[3m #no soportado en otras sh | |
subrayado | \e[4m | |
parpadeo | \e[5m | |
reverso | \e[7m | |
oculto | \e[8m | |
negro | \e[30m | \e[40m |
rojo | \e[31m | \e[41m |
verde | \e[32m | \e[42m |
naranja | \e[33m | \e[43m |
azul | \e[34m | \e[44m |
magenta | \e[35m | \e[45m |
cyan | \e[36m | \e[46m |
gris claro | \e[37m | \e[47m |
por defecto | \e[39m | \e[49m |
gris oscuro | \e[90m | \e[100m |
rosa | \e[91m | \e[101m |
verde claro | \e[92m | \e[102m |
amarillo | \e[93m | \e[103m |
azul claro | \e[94m | \e[104m |
purpura claro | \e[95m | \e[105m |
verde azulado o teal | \e[96m | \e[106m |
blanco | \e[97m | \e[107m |
También es posible usar estos códigos de color en otros lenguajes, en #Python podemos usar el carácter de escape '\x1b[<id-color>' para lo mismo.
Este es un post cortico, pero me pareció curioso y útil para compartir, espero que este truco les sea de ayuda en sus propios proyectos. Nos vemos en un próximo post.
Comments