¿Es posible cambiar los atributos de fuente de la salida de echo en zsh o bash?
Lo que me gustaría es algo parecido a:
echo -n "This is the font: normal "
echo -n $font=italic "italic,"
echo -n $font=bold "bold,"
echo -n "and"
echo -n $font=small "small".
para que imprima:“Esta es la fuente:normal, cursiva , negrita , ” dentro de una línea de texto.
Respuesta aceptada:
En la mayoría, si no en todos, los emuladores de terminal, no puede configurar diferentes tamaños de fuente o diferentes fuentes, solo colores y algunos atributos (negrita, subrayado, resaltado).
En bash (o en zsh o cualquier otro shell), puede usar las secuencias de escape de la terminal directamente (aparte de algunas exóticas, todas las terminales siguen el ejemplo de xterm en estos días). CSI
es ESC [
, escrito $'\e['
en bash. La secuencia de escape para cambiar atributos es CSI Ps m
.
echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'
Zsh tiene una función conveniente para eso.
autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e'$color[underline]munderlined
O puede hacerlo como parte de la expansión rápida , también hecho con print -P
, o el %
indicador de expansión de parámetros :
print -P '%F{red}%Bbold%b red%f %Uunderline%u'