Bash

在 echo 命令中更改字型

  • June 16, 2021

是否可以在 zsh 或 bash 中更改 echo 輸出的字型屬性?

我想要的是類似於:

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".

以便在一行文本中列印:“這是字型:正常、斜體粗體、小”。

在大多數(如果不是全部)終端仿真器上,您不能設置不同的字型大小或不同的字型,只能設置顏色和一些屬性(粗體、下劃線、突出)。

在 bash(或 zsh 或任何其他 shell)中,您可以直接使用終端轉義序列(除了一些外來的轉義序列,這些天所有終端都遵循 xterm 的領導)。CSIESC [,用$'\e['bash 編寫的。更改屬性的轉義序列是CSI Ps m.

echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'

Zsh 有一個方便的功能

autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e['$color[underline]munderlined

或者可以將其作為提示擴展的一部分,也可以使用print -P,或% 參數擴展標誌

print -P '%F{red}%Bbold%b red%f %Uunderline%u'

引用自:https://unix.stackexchange.com/questions/37260