Est-il possible de modifier les attributs de police de la sortie d'echo en zsh ou en bash ?
Ce que je voudrais, c'est quelque chose comme :
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".
pour qu'il affiche :"Ceci est la police :normale, italique , gras , ” dans une ligne de texte.
Réponse acceptée :
Sur la plupart des émulateurs de terminaux, sinon tous, vous ne pouvez pas définir différentes tailles de police ou différentes polices, uniquement des couleurs et quelques attributs (gras, souligné, remarquable).
Dans bash (ou dans zsh ou tout autre shell), vous pouvez utiliser directement les séquences d'échappement du terminal (à part quelques exotiques, tous les terminaux suivent l'exemple de xterm de nos jours). CSI
est ESC [
, écrit $'\e['
en bas. La séquence d'échappement pour modifier les attributs est CSI Ps m
.
echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'
Zsh a une fonction pratique pour cela.
autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e'$color[underline]munderlined
Ou peut le faire dans le cadre de l'expansion rapide , aussi fait avec print -P
, ou le %
indicateur d'extension de paramètre :
print -P '%F{red}%Bbold%b red%f %Uunderline%u'