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

示例

颜色与代码对应表

linux_ansi控制码_第1张图片

代码:

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

linux_ansi控制码_第2张图片


代码:

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

}

 其他字体属性:

linux_ansi控制码_第3张图片


BTW:

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



你可能感兴趣的:(linux_ansi控制码)