前言
shell 中的打印有echo
和printf
,不过printf
就强大了,支持格式化输出,当然我们这里的输出有颜色的文本也是支持的,如果想要echo
支持则需要使用echo -e
表示支持转义
背景底色号码;
这部分可以删除,这样就是默认黑色底色了;下面的\033
与\e
一样,所以二者可以互换
默认背景底色号码:40 表示黑色
默认字体颜色号码:37 表示白色
# 基本格式如下
printf "\e[背景底色号码;字体颜色号码m 格式化输出符号 \e[0m" "文本内容";
echo -e "\e[背景底色号码;字体颜色号码m 文本内容 \e[0m";
# 默认情况下命令台的样式
printf "\e[40;37m %s\n \e[0m" "hello world!";
echo -e "\e[40;37m hello world! \e[0m";
颜色数据号码
下面注意字体背景颜色既可以在背景号码中写,也可以在字体颜色号码中写
背景颜色号码
- 字体背景颜色范围 40-47
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字体颜色号码
- 字基本颜色号码 30-37
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色 - 字体高亮颜色号码 90-97
90:黑
91:红
92:绿
93:黄
94:蓝色
95:紫色
96:深绿
97:白色 - 字背景颜色范围 40-47
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
# 显示黑色背景 40,绿色字体 32
printf "\e[40;32m %s\n \e[0m" "hello world";
echo -e "\e[32m hello world \e[0m";
其他的我们需要稍微注意一下的是不管是echo
还是printf
输出感叹号时候是有问题的(写在 sh 里是没问题的),因为感叹号被识别为一个命令行历史替换符号了,比如!!
表示执行上一个命令,在双引号中甚至不能转义,所以我们要这样写echo "hello world"\!
或者echo hello world\!