echo -e 的意思:如果字符串中出现某些特定的字符组合(转义字符),echo会将这些字符组合解释为特殊的含义,而不是将其作为普通文本输出。
ASCII 编码表,中前三十个左右都是控制字符,控制字符的意思是可以实现一些控制,比如换行等。
其中有一个字符是控制终端颜色的,十进制就是 27,ASCII还有两个字符:0 和x 表示转义字符,意思是0或是x后面紧跟的字符作用是实现控制,而不是直接输出。
比如:
echo -e "bbb \n aaa"
echo -e "bbb \012 aaa"
echo -e "bbb \xA aaa"
上面三种的输出是一样的
分析->这里的 \012 意思就是12这个数字是是实现做控制的,\0作为控制标志位,指的就是八进制,\012 用八进制实现的控制,实际上转成十进制就是->10 找到下图中,10对应的就是**\n**, 同理\x也是控制位标志符,指的是用十六进制, 10 的八进制是12,十六进制是 A
因此\012 和\xA 都是表示换行。
数字 27 对应的就是颜色中断控制。 我们想要控制的话就用: \033 或者\x1b 二者转成十进制都是 27 都是对颜色的控制
echo -e "\033[32m 测试 \033[0m"
echo -e "\x1b[32m 测试 \033[0m"
两种写法都一样,我们只分析八进制的写法吧:
1. \033 开启颜色渲染
2. [32m 是固定写法,意思背景色设为绿色, 此时你的shell终端字体背景色会一直是绿色
3. \033[0m 的意思是再次开终端颜色控制,颜色设为终端默认。这样就恢复原样了
分析:echo -e 的意思:如果字符串中出现某些特定的字符组合(转义字符),echo会将这些字符组合解释为特殊的含义,而不是将其作为普通文本输出。
[显示方式;前景色;背景色m
显示方式 意义
-------------------------
0 终端默认设置
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见
\033[1;31;40m 含义是:1->高亮显示 31->前景色红色 40->背景色黑色
参考:shell终端颜色