¡Buenas, gente! Hoy os traigo un minitutorial con unos resultados bastante “coloríos”. Voy a explicar cómo cambiar el color del texto de la terminal de Linux. No, no me estoy refiriendo a cambiar las preferencias de resaltado, sino a imprimir strings de colores como estos:
Con este tutorial aprenderemos a cambiar el tipo de letra, su color y el fondo del texto.
Secuencias de escape
Los textos normales en la Terminal de Linux se escriben con la instrucción echo:
echo "Hola mundo!"
Para cambiar los atributos de este string hay que utilizar secuencias de escape (escape sequences). Se trata de secuencias de carácteres especiales que el ordenador interpreta literalmente y pueden modificar la presentación del texto.
¿Os parece algo raro? Pues de hecho, usamos secuencias de escape a diario sin darnos cuenta. ¿No me creéis? El de salto de línea ‘\n’ es una secuencia de escape, como también lo son el carácter ‘\a’ y ‘\t’.
El color y el formato del string de texto se cambia con la secuencia ‘\e[$m‘, sustituyendo el símbolo ‘$’ por un valor numérico. Vamos a escribir “Robologs” de color azul:
echo -e "\e[34mRobologs\e[0m"
Vamos a ver… ¿qué hace cada parte de esta instrucción?
¿Se entiende? ¿Sí? ¡Pues vamos a divertirnos un rato!
Cambiar el color de la letra
Los números del 30 al 37 y del 90 al 97 cambian el color del texto.
Por ejemplo, para escribir “Robologs” de color Cyan:
echo -e "\e[36mRobologs\e[0m"
O para escribirlo en Verde claro:
echo -e "\e[92mRobologs\e[0m"
Cambiar el color del fondo
También se puede cambiar el color del fondo con los números del 40 al 47 y del 100 al 107:
Ejemplos:
echo -e "\e[43mRobologs\e[0m"
echo -e "\e[102mRobologs\e[0m"
echo -e "\e[106mRobologs\e[0m"
Negrita, subrayado, texto oculto…
Para cambiar la letra a negrita se escribe \e[1m:
echo -e "\e[1mTexto en negrita\e[0m"
Con \e[2m el texto tiene un color ténue:
echo -e "\e[2mTexto oscuro...\e[0m"
También pueden escribirse textos en letra cursiva…
echo -e "\e[3mTexto en cursiva\e[0m"
…añadir subrayados…
echo -e "\e[4mTexto subrayado\e[0m"
…invertir el texto…
echo -e "\e[7mInvertido\e[0m"
…y ocultarlo. Va muy bien para introducir contraseñas.
echo -e "\e[8mHere goes nothing...\e[0m"
Combinar atributos
También se pueden combinar atributos separándolos con punto y coma. Veamos… ¿qué tal un texto en negrita de color verde con el fondo rojo?
echo -e "\e[1;101;92mRobologs\e[0m"
¿Y un texto azul, subrayado y con fondo amarillo?
echo -e "\e[4;103;34mLorem ipsum dolor sit amet\e[0m"
Ugh… me duelen mis sensores oculares con solo verlo.
Lenguajes de programación
Si sustimos el carácter \e por \033 podemos utilizar estos strings en cualquier lenguaje de programación para imprimir texto de color.
Por ejemplo, en Python:
print("\033[1;44mHola mundo!\033[0m")
O en C++:
cout << "\033[1;44mHola mundo!\033[0m" << endl;
Me gusto tu articulo y muy dinamico, facil de entender y replicar, tal vez unos ejemplos mas seria como la version 2.0
Excelente explicación, quisiera saber si puedes orientarme sobre como colocar los caracteres gráficos para dibujar cajas de lineas sencillas y dobles
Excelentemente bien explicado !!!!!
Excelente informacion, gracias
Hola amigo jaja muy buen blog :’v quiero llorar XD.
me gustaría preguntarte algunas cosas acerca de las secuencias de escape, no en especifico estas… Mi correo es:
farfox96@gmail.com
Gracias!
Muchas gracias!!!, sería super si ahondaras en el tema de la terminal de Linux con lenguajes de programación…
Muy bien explicado ahora se para que es cada elemento, vi otros blogs pero solo son copy page de otro blog, y bastante confusos!!
Hablando de carácteres de escape, sabras como ejecutar un telnet con una secuencia de escapé para que me devuelva el prompt y no de quede en el telnet?