前言
众所周知,Linux中的echo
命令可以输出文本,命令格式如下所示
1 | echo "Hello World!" |
那应该如何输出带颜色的文本呢?
echo命令介绍
首先来看一下echo
命令的介绍
功能说明:显示文字
语法:echo [-ne][字符串] / echo [–help][–version]
补充说明:echo会将输入的字符串标准输出,输出的字符串以空白字符隔开, 并在最后加上换行号。
参数:
参数名 | 介绍 |
---|---|
-n | 不要在最后自动换行(不自动换行) |
-e | 开启反斜杠ESC转义。若字符串中出现以下字符,则加以特别处理,而不会将它当成普通的文字输出 |
\a | 发出警告声 |
\b | 删除前一个字符 |
\c | 最后不加上换行符号 |
\f | 换行但光标仍旧停留在原来的位置 |
\n | 换行且光标移至行首 |
\r | 光标移至行首,但不换行 |
\t | 插入tab制表符 |
\v | 与\f相同; |
\\ | 插入\字符 |
\nnn | 插入nnn(八进制)所代表的ASCII字符 |
-E | 取消反斜杠ESC转义 (默认) |
-help | 显示帮助 |
-version | 显示版本信息 |
再来看一下我的示例代码
1 | echo -e "\033[30;47mBlack Color\033[0m" |
运行结果如下所示
好了,我们看到帮助中-e
是开启反斜杠转义,想必大家都已经猜到了,echo
命令想要输出带颜色的文字,就必须使用-e
代码中的\033[
表示终端转义开始,而后面的数字就是颜色代码,最后一个m
表示终端转义结束,颜色代码参考下表
编码 | 颜色/动作 |
---|---|
0 | 重新设置属性到缺省设置 |
1 | 设置粗体 |
2 | 设置一半亮度(模拟彩色显示器的颜色) |
4 | 设置下划线(模拟彩色显示器的颜色) |
5 | 设置闪烁 |
7 | 设置反向图象 |
22 | 设置一般密度 |
24 | 关闭下划线 |
25 | 关闭闪烁 |
27 | 关闭反向图象 |
30 | 设置黑色前景 |
31 | 设置红色前景 |
32 | 设置绿色前景 |
33 | 设置黄色前景 |
34 | 设置蓝色前景 |
35 | 设置紫色前景 |
36 | 设置青色前景 |
37 | 设置白色(灰色)前景 |
38 | 在缺省的前景颜色上设置下划线 |
39 | 在缺省的前景颜色上关闭下划线 |
40 | 设置黑色背景 |
41 | 设置红色背景 |
42 | 设置绿色背景 |
43 | 设置黄色背景 |
44 | 设置蓝色背景 |
45 | 设置紫色背景 |
46 | 设置青色背景 |
47 | 设置白色(灰色)背景 |
49 | 设置缺省黑色背景 |
详细解释
1 | echo -e "\033[30;47mColor\033[0m" |
上面这条代码,\033[
开启转义30
表示设置了黑色前景
,但由于终端背景颜色是黑色,所以文字就看不到了,后面的47
是设置白色背景,30
和47
之间要用 分号(;)
隔开,并且这两个数字 没有先后顺序,最后一个m
表示停止转义。
需要注意的地方
- 想必有些童鞋已经发现了,前景颜色和背景颜色数字只差10
- 必须要使用
-e
来开启转义 \033[
表示终端转义开始m
表示转义结束,务必不要忘记这个m
m
要紧跟前面的数字,不能有空格- 颜色输出完毕之后,最好加上
\033[0m
来清空颜色样式,避免终端颜色混乱