Shell终端字符颜色设置

我们在编写程序的时候,通常需要终端对输出显示红色或者绿色等各种颜色,以便更加清楚的对用户做出提示。下面是Shell系统终端颜色的设置方式:

终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关,shellpythonperl, C,C++等均可以调用。
转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27, 等价于用八进制表示的 33)。

  • 显示格式: \033[显示方式;前景色;背景色;动作m;
  • 其中显示方式,前景色或背景色无顺序关系,其中任何一项也不是必须的。
  • 系统默认颜色:\033[0m

文本终端的颜色可以使用“ANSI非常规字符序列”来生成。举例:

echo -e “\033[44;37;5m ME \033[0m COOL”

以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符“COOL”“e”是命令 echo的一个可选项,它用于激活特殊字符的解析器。“\033”引导非常规字符序列。“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是“44;37;5”“0”

修改“44;37;5”可以生成不同颜色的组合,数值和编码的前后顺序没有关系。可以选择的编码如下所示:

编码 颜色/动作

  • 0 重新设置属性到缺省设置
  • 1 设置粗体
  • 2 设置一半亮度(模拟彩色显示器的颜色)
  • 4 设置下划线(模拟彩色显示器的颜色)
  • 5 设置闪烁
  • 7 设置反向图象
  • 22 设置一般密度
  • 24 关闭下划线
  • 25 关闭闪烁
  • 27 关闭反向图象
  • 30 设置黑色前景
  • 31 设置红色前景
  • 32 设置绿色前景
  • 33 设置棕色前景
  • 34 设置蓝色前景
  • 35 设置紫色前景
  • 36 设置青色前景
  • 37 设置白色前景
  • 38 在缺省的前景颜色上设置下划线
  • 39 在缺省的前景颜色上关闭下划线
  • 40 设置黑色背景
  • 41 设置红色背景
  • 42 设置绿色背景
  • 43 设置棕色背景
  • 44 设置蓝色背景
  • 45 设置紫色背景
  • 46 设置青色背景
  • 47 设置白色背景
  • 49 设置缺省黑色背景

其他有趣的代码还有:

  • \033[2J  清除屏幕
  • \033[0q  关闭所有的键盘指示灯
  • \033[1q  设置“滚动锁定”指示灯 (Scroll Lock)
  • \033[2q  设置“数值锁定”指示灯 (Num Lock)
  • \033[3q  设置“大写锁定”指示灯 (Caps Lock)
  • \033[15:40H 把关闭移动到第15行,40列
  • \007   发蜂鸣生beep

相关推荐