Linux 终端控制符

     最近看redis源码,redis-cli源码中出现很多奇怪的字符串如"\x1b[0K",谷歌发现这是Linux终端特殊控制符,可以控制终端的显示效果,如清屏,前景背景色设置,字体设置等。

可通过命令:man console_codes 查看详细文档。

 

\x1b 表示16进制码1b,1b对应ascii码是ESC,参见ANSI标准,前缀1B赋予序列新含义。

[是一个CSI(Control sequence introducer),转义序列作用由最后一个字符决定,即K(清除行)

0是参数,表恢复默认属性。

该语句的含义是:清除光标右边文本

 

echo -e "\x1b[2J#清屏,也可以表示\033[2J(8进制)

echo -e "\x1b[34m#设置前景色为34(蓝色)

 

一. 常用属性

1.常用控制码

\x1b[0m                 关闭所有属性

\x1b[1m                 设置高亮度

\x1b[4m                 下划线

\x1b[5m                 闪烁

\x1b[7m                 反显

\x1b[8m                 消隐

\x1b[30m -- \x1b[37m    设置前景色

\x1b[40m -- \x1b[47m    设置背景色

\x1b[nA                 光标上移n行

\x1b[nB                 光标下移n行

\x1b[nC                 光标右移n列

\x1b[nD                 光标左移n列

\x1b[y;H                设置光标位置

\x1b[2J                 清屏

\x1b[K                  清除从光标到行尾的内容

\x1b[s                  保存光标位置

\x1b[u                  恢复光标位置

\x1b[?25l               隐藏光标

\x1b[?25h               显示光标

 

2.文字背景色彩数字: (颜色范围:40 - 49)

40:    黑色

41:    深红色

42:    绿色

43:    黄色

44:    蓝色

45:    紫色

46:    深绿色

47:    白色

 

3.文字前景色数字: (颜色范围: 30 - 39)

30:    黑色

31:    红色

32:    绿色

33:    黄色

34:    蓝色

35:    紫色

36:    深绿色

37:    白色

 

4. 其它

0:重置默认效果          如显示红色效果:printf "\x1b[31mhello\x1b[0m",注:securecrt仿真终端设置为xterm

1:加粗

2:半高亮,效果不明显

4:下划线

5:闪烁#这个比较好玩,echo -e "\x1b[5mhelloworld\x1b[0m",发现helloworld在不停闪烁

 

二.进度条实现

 

#!/bin/sh

showprogress()
{
        code=""
        for((i=1;i<=20;i++)); do
                code=${code}"$1"

                if [ $2 -eq "1" ]; then
                        printf "%3d%% \x1b[31m%s\x1b[0m\r" $(($i*5)) $code
                else
                        printf "%3d%% \x1b[41m\x1b[31m%s\x1b[0m\r" $(($i*5)) $code
                fi
                sleep 0.5
        done
        echo
}

showprogress "#" 1
showprogress "1" 2

 

 效果:

 

 

 

 

 

 

你可能感兴趣的:(OS)