2014-03-21 16:40:35
在bash脚本的输出中适当使用颜色可以使结果呈现得更直观, 便于快速获取信息. 试想, 从一堆黑色文字中获取某个数字, 你可能要花点时间查看, 分析, 才能知道答案. 若这个数字是以红色标识出来的, 那大多数人一眼就可以得到答案, 所花的时间也要少得多.
利用echo
命令可以设置输出的颜色和效果, 格式为:
echo -e "\033[前景色;背景色;效果m输出字符\033[0m"
\033
为ASCII码ESC
(八进制33, 十进制27), 也可用\e
代替, 即
echo -e "\e[前景色;背景色;效果m输出字符\e[0m"
30-37设置前景色, 40-47设置背景色, 颜色为ANSI标准色
- 前/背 色
- 30/40 黑
- 31/41 红
- 32/42 绿
- 33/43 黄
- 34/44 蓝
- 35/45 紫
- 36/46 青
- 37/47 白
模式中设置字符的特殊效果, 常用的有
- 0 恢复默认
- 1 高亮
- 4 下划线
- 5 闪烁
- 7 反显
- 8 消隐
例:
echo -e "\e[41;37m 红底白字 \e[0m"
echo -e "\e[37;41;1m 红底白字+高亮 \e[0m"
测试代码
# Language: bash
echo
T='RGB'
echo " B\F" {30..37}m" "
for BACK in {40..47}; do
echo -en " $BACK"
for FORE in {30..37}m; do
echo -en "\e[$BACK;$FORE $T \e[0m"
done
echo
done
echo
for MODE in 1 4 5 7 8; do
echo " B\F" {30..37}";${MODE}m "
for BACK in {40..47}; do
echo -en " $BACK"
for FORE in {30..37}";${MODE}m"; do
echo -en "\e[$BACK;$FORE $T \e[0m"
done
echo
done
echo
done
echo "F\B" {40..47}m" "
for FORE in {30..37}; do
echo -en " $FORE"
for BACK in {40..47}m; do
echo -en "\e[$FORE;$BACK $T \e[0m"
done
echo
done
echo
for MODE in 1 4 5 7 8; do
echo "F\B" {40..47}";${MODE}m "
for FORE in {30..37}; do
echo -en " $FORE"
for BACK in {40..47}";${MODE}m"; do
echo -en "\e[$FORE;$BACK $T \e[0m"
done
echo
done
echo
done
输出
注意
- 利用
echo
设置输出颜色与模式后, 命令行中所有的输出都会以设置的格式输出, 除非再利用echo
设置为默认格式. - 由于所用数字不重复, 背景, 前景, 模式三个数字顺序无关紧要, 可以任意顺序指定.
- CygWin中使用时效果4, 5, 7功能不全.