ansi控制码
简介
ANSI控制码用于在字符显示系统中控制光标移动和字符色彩等,常用于BBS系统中。
ANSI ESCAPE SEQUENCES又称为VT100系列控制码,国内译为ANSI控制码。顾名思义,需要VT100系列终端的支持,当然现在已经不在局限于VT100了,包括xterm,linux都能很好完成。
ANSI控制码开始的标志都为ESC[,ESC对应ASCII码表的033(八进制),linux命令echo用-e启用转义,\033来输入ESC,\033[31m即为ESC[31m。
格式
echo:-e 用来开启echo中的转义,\e 或 \033 来输出Esc符号
格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
注意m后面紧跟字符串。
例如:
echo -e "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的颜色
那些ascii code 是对颜色调用的始末
\033[ ; m ……\033[0m
*****************************************************
\033[0m 关闭所有属性
\033[1m 设置高亮度
\03[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[nA 光标上移n行
\03[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\33[?25h 显示光标
*****************************************************
字背景颜色范围:40---49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字颜色范围:30---39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
*****************************************************
显示字元属性控制
[n1;n2;......m
Ⅰ设定显示字元的属性状态;
Ⅱ若有两个以上的属性状态要设定则以分号将代码(n1;n2;..)隔开;
Ⅲ除非重新设定,否则原设定之属性一直被保留;
*****************************************************
用途
ANSI控制码倚赖终端,不是倚赖语言,所以在shell,perl,c里应用均没有问题;
至于ANSI控制码到底有哪些作用,恐怕要发挥想像了,比如装扮终端,用颜色警示或分类等等。
示例
颜色与代码对应表
![](https://img-my.csdn.net/uploads/201211/20/1353421682_1091.jpg)
代码:
#!/bin/bash
#
for(( i=40;i<47;i++ ))
{
for(( j=30;j<37;j++ ))
{
#echo $i,$j
echo -en"\033["$i";"$j"m" $i";"$j"m\033[0m"
}
echo ""
}
前面提到字背景颜色和字体颜色范围分别是40-49和30-39,但似乎38和39、48和49并没有差异(不会是因为我色弱吧...),将i和j的范围调整可得:
代码:
#!/bin/bash
#
for(( i=40;i<50;i++ ))
{
for(( j=30;j<40;j++ ))
{
#echo $i,$j
echo -en"\033["$i";"$j"m" $i";"$j"m\033[0m"
}
echo ""
}
其他字体属性:
BTW:
对光标的控制还没应用到,此处暂不说明。