前言
众所周知,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表示转义结束,务必不要忘记这个mm要紧跟前面的数字,不能有空格- 颜色输出完毕之后,最好加上
\033[0m来清空颜色样式,避免终端颜色混乱
