1. 1. 前言
  2. 2. echo命令介绍
  3. 3. 详细解释
  4. 4. 需要注意的地方

前言

众所周知,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
2
3
4
5
6
7
8
echo -e "\033[30;47mBlack Color\033[0m"
echo -e "\033[31mRed Color\033[0m"
echo -e "\033[32mGreen Color\033[0m"
echo -e "\033[33mYellow Color\033[0m"
echo -e "\033[34mBlue Color\033[0m"
echo -e "\033[35mViolet Color\033[0m"
echo -e "\033[36mCyan Color\033[0m"
echo -e "\033[37mWhite 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是设置白色背景,3047之间要用 分号(;) 隔开,并且这两个数字 没有先后顺序,最后一个m表示停止转义。

需要注意的地方

  • 想必有些童鞋已经发现了,前景颜色和背景颜色数字只差10
  • 必须要使用-e来开启转义
  • \033[表示终端转义开始
  • m表示转义结束,务必不要忘记这个m
  • m要紧跟前面的数字,不能有空格
  • 颜色输出完毕之后,最好加上\033[0m来清空颜色样式,避免终端颜色混乱