如何将 echo 输出的文字加上前景色、背景色、闪烁等效果
格式
1 | echo -e "\033[31m hello \033[0m kitty" |
- 参数 “-e”
确保 echo 将紧跟字符串转义处理 - 格式 “\033[31m”
“\033”(也可用”\e”)被转义为ESC, “\033[ XXX m”将修改当前输出属性, XXX 即例子中的 31为带设置的属性 - 格式 “\033[0m”
重置当前输出属性 - “hello” “kitty”
待输出字符串
属性
属性分为三大类
- 字体颜色(前景色)
范围: 30 - 37 - 背景颜色
范围:40 - 47 - 特殊效果
比如加粗,闪烁
列举几个简单的属性
十进制数 | 属性 |
---|---|
30 | 字体为黑色 |
31 | 字体为黑色 |
40 | 背景色为黑色 |
41 | 背景色为红色 |
0 | 重置当前属性 |
1 | 字体加粗 |
5 | 字体闪烁 |
误区
网络上有一种格式1
echo -e "\033[字背景颜色;字体颜色m字符串\033[控制码"
让人误以为第一个字段是设置背景颜色,第二个字段是字体颜色。其实不是,字体颜色、背景颜色、特殊效果三个属性所对应的范围是一个区间的不同区间段,他们并非“相互独立”,但却是”不会重合”,所以多个属性并没有顺序的限制。我们只要写下需要的属性,中间用 ;隔开。
比如:1
2echo -e "\033[31;44m hello \033[0m kitty"
echo -e "\033[44;31m hello \033[0m kitty"
都是蓝底红字。
限定一个顺序比如1
echo -e "\033[字背景颜色;字体颜色;特殊效果m字符串\033[控制码"
这种格式会更整齐一点。