Je možné změnit atributy fontu výstupu echo v zsh nebo bash?
Co bych chtěl, je něco podobného:
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".
aby se vytisklo:„Toto je písmo:normální, kurzíva , tučné , ” v řádku textu.
Přijatá odpověď:
Na většině, ne-li na všech emulátorech terminálu, nemůžete nastavit různé velikosti písma nebo různá písma, pouze barvy a několik atributů (tučné, podtržené, výrazné).
V bash (nebo v zsh nebo jakémkoli jiném shellu) můžete přímo použít terminálové escape sekvence (kromě několika exotických se všechny terminály v dnešní době řídí vzorem xterm). CSI
je ESC [
, napsané $'\e['
v bash. Escape sekvence pro změnu atributů je CSI Ps m
.
echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'
Zsh má k tomu pohodlnou funkci.
autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e'$color[underline]munderlined
Nebo to můžete udělat jako součást okamžitého rozšíření , také pomocí print -P
, nebo %
příznak rozšíření parametrů :
print -P '%F{red}%Bbold%b red%f %Uunderline%u'