È possibile modificare gli attributi dei caratteri dell'output di echo in zsh o bash?
Quello che vorrei è qualcosa di simile 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".
in modo che stampi:“Questo è il carattere:normale, corsivo , grassetto , ” all'interno di una riga di testo.
Risposta accettata:
Sulla maggior parte, se non su tutti gli emulatori di terminale, non è possibile impostare dimensioni dei caratteri o caratteri diversi, solo colori e alcuni attributi (grassetto, sottolineato, in evidenza).
In bash (o in zsh o qualsiasi altra shell), puoi usare direttamente le sequenze di escape del terminale (a parte alcune esotiche, tutti i terminali seguono l'esempio di xterm in questi giorni). CSI
è ESC [
, scritto $'\e['
in bash. La sequenza di escape per modificare gli attributi è CSI Ps m
.
echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'
Zsh ha una comoda funzione per questo.
autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e'$color[underline]munderlined
Oppure puoi farlo come parte di espansione rapida , fatto anche con print -P
o il %
flag espansione parametri :
print -P '%F{red}%Bbold%b red%f %Uunderline%u'