Shell与Perl中的颜色控制

1.控制码
e[0m 关闭所有属性
e[1m 设置高亮度
e[4m 下划线
e[5m 闪烁
e[7m 反显
e[8m 消隐
e[30m–33[37m 设置前景色
e[40m–33[47m 设置背景色
e[nA 光标上移n行
e[nB 光标下移n行
e[nC 光标右移n行
e[nD 光标左移n行
e[y;xH 设置光标位置
e[2J 清屏
e[K 清除从光标到行尾的内容
e[s 保存光标位置
e[u 恢复光标位置
e[?25l 隐藏光标
e[?25h 显示光标

2.前景色(字体颜色)
e[30m 黑色
e[31m 红色
e[32m 绿色
e[33m 黄色
e[34m 蓝色
e[35m 紫色
e[36m 淡蓝色
e[37m 白色

3.背景色
e[40m 黑色
e[41m 红色
e[42m 绿色
e[43m 黄色
e[44m 蓝色
e[45m 紫色
e[46m 淡蓝色
e[47m 白色

4.测试
033和e是一回事,使用e会更简单一些。

1
2
echo -e "e[32me[1mhello worlde[0m"
printf "e[34me[4me[1m%se[0mn" "hello world"

颜色是通过添加专用序列来选择的——基本上是夹在 “e[“和 “m” 之间的数字值。如果指定一个以上的数字代码,则用分号将它们分开,如:

1
echo -e "e[31;40m"

第一个数字(31)为前景颜色(红色);第二个数字为(40)背景颜色(黑色);

1
echo -e "e[0m"

使用 “e[0m” 序列将颜色重新设置为正常值。

5.Perl

1
printf("e[1;33m Hello World. e[0m n");

具体规则如下:
none=”e[0m”

black=”e[0;30m”
red=”e[0;31m”
green=”e[0;32m”
brown=”e[0;33m”
blue=”e[0;34m”
purple=”e[0;35m”
cyan=”e[0;36m”
light_gray=”e[0;37m”

dark_gray=”e[1;30m”
light_red=”e[1;31m”
light_green=”e[1;32m”
yellow=”e[1;33m”
light_blue=”e[1;34m”
light_purple=”e[1;35m”
light_cyan=”e[1;36m”
white=”e[1;37m”