La forma portátil de hacer esto es usartput
:
ql_gray=$(tput setaf 7)
ql_magenta=$(tput setaf 5)
ql_cyan=$(tput setaf 6)
ql_orange=$(tput setaf 3)
ql_green=$(tput setaf 2)
ql_no_color=$(tput sgr0)
Esto tendrá en cuenta la configuración actual del terminal. La lista oficial de colores está documentada en la página de manual terminfo(5)
, pero es posible que deba experimentar; por ejemplo, en la lista anterior, 7 es oficialmente blanco (pero termina en gris claro en la mayoría de los terminales ), y 3 es oficialmente amarillo (pero termina en amarillo oscuro o naranja en la mayoría de los terminales ). Puede deshabilitar los colores configurando TERM=dumb
antes de llamar a tput
.
Necesita obtener bash para interpretar las secuencias de escape en las cadenas allí. Puede usar cualquiera de:
echo -e "${ql_gray}..."
printf "%b\n" "${ql_gray}..."
O evaluarlos al configurar las variables:
ql_gray=$'\033[1;30m'
Entonces cualquiera de:
echo "${ql_gray}..."
printf "%s\n" "${ql_gray}..."
En lugar de usar echo
, use echo -e
, usar ese indicador reconocerá los caracteres de control.
printf
también podría funcionar,aparentemente es una cosa POSIX