在 shell 脚本中显示颜色

在 shell 脚本中显示颜色

我是否可以在终端中打印颜色而不使用 .Xresources 中的颜色?例如,echo -e "\033[32m Test"将打印“Test”,但它的颜色是我在 .Xresources 中定义为绿色的颜色。话虽这么说,我如何打印未定义的颜色,例如#FF0000,而不重新定义我的预设。

答案1

终端(外壳)窗口中的颜色与文件中的颜色没有真正的关系.Xresources

如果您想在终端(外壳)窗口中打印颜色,您应该认真考虑该tput命令。这使用terminfo数据库生成必要的转义序列来获取颜色(除其他外)。

您可以man 5 terminfo阅读有关 的部分Color Handling。这是可用颜色表:

Colour    Value RGB
black     0     0, 0, 0
red       1     max,0,0
green     2     0,max,0
yellow    3     max,max,0
blue      4     0,0,max
magenta   5     max,0,max
cyan      6     0,max,max
white     7     max,max,max

并使用setaf(设置 ANSI 前景)和setab(设置 ANSI 背景)命令来设置它们。之后用于sgr0重置它们。

例如

tput setaf 4    # Blue text
tput setab 3    # Yellow background
echo -n "This is blue text on a yellow background"
tput sgr0       # Reset colours
echo 

答案2

某些终端仿真器支持直接 RGB 真彩色。看https://gist.github.com/XVilka/8346728了解详细信息和使用示例。

相关内容