Introducción
El echo
El comando envía una cadena dada al tubería de salida estándar, normalmente apuntando a la terminal. Aunque la tubería de salida estándar puede apuntar a otras interfaces, la echo
El comando generalmente se usa para imprimir y mostrar mensajes en la terminal. De forma predeterminada, el texto del mensaje que se muestra hereda el color de otro texto en la terminal (que es personalizable en sí mismo). Sin embargo, hay varias formas de modificar el color de salida de echo
– tanto para cadenas individuales como para mensajes completos.
En esta breve guía, veremos cómo puede cambiar el color de salida de
echo
en sistemas basados en Linux, usando códigos de escape ANSI,tput
y cómo puede hacer que este proceso sea menos detallado en los scripts de Bash.
Cambiar el color de salida con códigos de escape ANSI
La forma más fácil de cambiar el color es a través de secuencias/códigos de escape ANSI. Todos los códigos de escape ANSI comienzan con el Escape
carácter, que se puede representar en varios formatos – 27
en decimal, x1B
en hexadecimal, como la tecla de control ^[
o 33
en formato octal. Luego, las secuencias son seguidas por el comando:
33[command
Donde el soporte de apertura (Introductor de secuencia de control) es opcional, pero ayuda a separar el comando del carácter de escape. cuando pones un código de color como comando, cambia el color del texto que se aproxima:
33[0;34
0;34
es el código para el color azul, por ejemplo. Solo con esto, puede cambiar el color del texto en echo
con:
33[0;34Text
Dónde Text
sería de color azul. Alternativamente, considere un simple script bash para imprimir "Bienvenido a Francia" en los colores de la bandera francesa:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
La opción -e
bandera de la echo
El comando le permite usar caracteres especiales como n
(nueva línea) y t
(pestaña) dentro de la cadena de entrada.
Una vez que ejecute el script:
$ ./colors.sh
En resultado de:
Los códigos ANSI no se limitan al color, sino que también se pueden aplicar para el estilo. los codigos 0..9
representan estilos de texto, mientras que los códigos 30...37
representar colores:
Color | Códigos | Estilos de texto | Códigos |
Negro | 30 | Texto simple | 0 |
Rojo | 31 | El texto en negrita | 1 |
Verde | 32 | Texto de baja intensidad | 2 |
Marrón / naranja | 33 | Subrayar texto | 4 |
Azul | 34 | Texto parpadeante | 5 |
Morado | 35 | Texto invisible | 8 |
Cian | 36 | Texto tachado | 9 |
Gris Claro | 37 |
Vamos a crear un script bash para explorar algunas de estas opciones:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
Ejecutar este script da como resultado:
Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!
De igual forma, puedes cambiar el color de fondo de estos textos usando códigos 40..47
:
Color | Códigos |
Negro | 40 |
Rojo | 41 |
Verde | 42 |
Marrón / naranja | 43 |
Azul | 44 |
Morado | 45 |
Cian | 46 |
Gris Claro | 47 |
Cambiar el fondo de una cadena determinada se reduce a la misma regla que cuando se cambia el color de la fuente: el código en sí cambia el comportamiento:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
Nota: Como regla general, puede convertir los colores de fuente en colores de fondo agregando 10. 30
es color de fuente negro, 40
es color de fondo negro.
Cambie el color de salida con el tput
Una alternativa a los códigos ANSI es usar el tput
mando:
$ tput setaf color_code
setf
permite 8 colores, mientras que setaf
permite 256 colores, por lo que dependiendo del comando que esté usando, puede elegir entre 0..7
y 0..255
como los códigos de color. Ambos comandos dedicar 0..7
a los mismos códigos de color, mientras que con setaf
, 8..15
son colores de alta intensidad, y 16..231
son diferentes tonalidades de los primeros 8, y 232..255
son colores en escala de grises:
Créditos: Wikipedia
Finalmente, tput
también te permite cambiar el color de fondo, agregar negrita, bajar la intensidad, etc. con otros comandos:
Estilos de texto | Comandos |
Color de primer plano | juego |
Color de fondo | establecer |
Sin estilo | sgv0 |
El texto en negrita | |
Texto de baja intensidad | oscuro |
Subrayar texto | smul |
Texto parpadeante | parpadear |
Texto inverso | acelerar |
Vamos a crear otro script que use tput
para cambiar el color de salida echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
Este script imprimirá el siguiente resultado en la terminal:
El comando tput ofrece una manera fácil de imprimir cualquier color a través de un código de color simple. Ahora vamos a crear un script que pueda imprimir todos los códigos de color disponibles para el comando tput:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
Imprimirá de 0 a 255 colores y sus códigos:
Conclusión
En esta breve guía, hemos echado un vistazo a cómo puede cambiar el color de echo
's de salida en Linux - usando ANSI Escape Sequences y el tput
mando.
También hemos explorado cómo puede hacer que el proceso sea menos detallado utilizando variables Bash, ajustar los colores de fondo y diseñar el texto.