仓库源文站点原文


layout: post title: Bash脚本中使用颜色 categories:


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标准色

模式中设置字符的特殊效果, 常用的有

例:

echo -e "\e[41;37m 红底白字 \e[0m"

echo -e "\e[37;41;1m 红底白字+高亮 \e[0m"

测试代码

<pre class="line-numbers" data-start="0"><code class="language-bash"># 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 </code></pre>

输出

bash echo颜色

bash echo颜色

注意

  1. 利用echo设置输出颜色与模式后, 命令行中所有的输出都会以设置的格式输出, 除非再利用echo设置为默认格式.
  2. 由于所用数字不重复, 背景, 前景, 模式三个数字顺序无关紧要, 可以任意顺序指定.
  3. CygWin中使用时效果4, 5, 7功能不全.