以下内容源于网络资源的学习与整理,如有侵权请告知删除。
参考博客
命令行特殊显示效果\033和发声音\007_华硕他哥的博客-CSDN博客
'\033'格式:指定输出格式_51CTO博客_wkt格式
一、\033的说明
在关于ASCII字符的那些事儿中提到,ASCII字符可以使用前面带反斜杠的八进制或者十六进制数字来表示单个字符。
这里的\033就是这个意思,反斜杠后面的033是八进制,化为十进制是27,对应着ASCII字符集表格上十进制编号为27的字符,即ESC。这个字符用来控制打印机的输出格式。
二、设置显示效果
1、格式说明
在linux中,我们可以利用这个字符来设置终端上的字体显示效果。
比如使用echo命令并利用\033控制字体显示效果的格式如下:
echo -e "\033[参数1;参数2;参数3m要显示的内容\033[0m"
(1)\033[参数1;参数2;参数3m,是控制码的写法,表明后面待显示内容的格式。
(2)参数1表示字体背景颜色,可选值为40~49、100~107;参数2表示字体颜色,可选值为30~39、90~97;参数3表示显示效果,可选值为0~8。这些数字的含义见附录。
(3)要显示的内容中可以有变量的引用,显示的时候会展开变量的内容。
(4)\033[0m是具体的控制码,表明关闭所有属性。如果在格式最后没有添加这个控制码来关闭所有属性,那么“\033[字体背景颜色;字体颜色m”所设置的格式将应用于接下来的所有显示。
当然也可以根据需要修改这个具体的控制码,但一般不这么做。
2、注意事项
(1)如果没有设置字体背景颜色这个内容,则不需要添加字体颜色之前的分号。
比如echo -e "\033[36mwhat's your name:\033[0m"的显示效果如下:
(2)字母m和结尾\033[0m之间的内容,就是要显示在终端的内容。字母m后面如果紧跟着空格,那么也会被当做字符输出。
(3)如果要显示的内容结尾是某个特殊符号(比如!)则可能会报错,需要在这个特殊符号与\033[0m之间输入一个空格。
附录
(1)字体颜色设置说明(斜杆前后的数字表示同一种颜色,但斜杆后面的数字让颜色更亮)。
数字 | 描述 |
30\90 | 黑色 |
31\91 | 红色 |
32\92 | 绿色 |
33\93 | 黄色 |
34\94 | 蓝色 |
35\95 | 紫色 |
36\96 | 深绿 |
37\97 | 白色 |
(2)字体背景颜色设置说明(斜杆前后的数字表示同一种颜色,但斜杆后面的数字让颜色更亮)
数字 | 描述 |
40\100 | 黑色 |
41\101 | 红色 |
42\102 | 绿色 |
43\103 | 黄色 |
44\104 | 蓝色 |
45\105 | 紫色 |
46\106 | 深绿 |
47\107 | 白色 |
(3) 控制码说明
控制码 | 含义 |
\033[0m | 关闭所有属性 |
\033[1m | 设置高宽度 |
\033[4m | 下划线 |
\033[5m | 闪烁 |
\033[7m | 反显 |
\033[8m | 消隐 |
\033[30m ~ \033[37m | 设置前景色 |
\033[40m ~ \033[47m | 设置背景色 |
\033[nA | 光标上移n行 |
\033[nB | 光标下移n行 |
\033[nC | 光标右移n行 |
\033[nD | 光标左移n行 |
\033[y;xH | 设置光标位置 |
\033[2J | 清屏 |
\033[K | 清除从光标到行尾的内容 |
\033[s | 保存光标位置 |
\033[u | 恢复光标位置 |
\033[?25l | 隐藏光标 |
\033[?25h | 显示光标 |