Ist es möglich, die Schriftattribute der Ausgabe von Echo in zsh oder bash zu ändern?
Was ich möchte, ist so etwas wie:
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".
so dass es druckt:„Dies ist die Schriftart:normal, kursiv , fett , ” innerhalb einer Textzeile.
Akzeptierte Antwort:
Bei den meisten, wenn nicht allen Terminalemulatoren können Sie keine unterschiedlichen Schriftgrößen oder Schriftarten einstellen, sondern nur Farben und einige Attribute (fett, unterstrichen, hervorstechend).
In bash (oder in zsh oder jeder anderen Shell) können Sie die Terminal-Escape-Sequenzen direkt verwenden (abgesehen von einigen exotischen folgen alle Terminals heutzutage dem Beispiel von xterm). CSI
ist ESC [
, geschrieben $'\e['
in bash. Die Escape-Sequenz zum Ändern von Attributen ist CSI Ps m
.
echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'
Zsh hat dafür eine praktische Funktion.
autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e'$color[underline]munderlined
Oder Sie können dies als Teil der Eingabeaufforderungserweiterung tun , ebenfalls mit print -P
, oder der %
Parametererweiterungs-Flag :
print -P '%F{red}%Bbold%b red%f %Uunderline%u'