ANSI控制码

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控制码到底有哪些作用,恐怕要发挥想像了,比如装扮终端,用颜色警示或分类等等。

示例

颜色与代码对应表

ANSI控制码

代码:

#!/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的范围调整可得:

ANSI控制码

代码:

#!/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 ""

}

其他字体属性:

ANSI控制码

BTW:

对光标的控制还没应用到,此处暂不说明。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/18633.html