table for 16-color terminal escape sequences

linux terminal中可控制文字的显示颜色,包括8个前景色,8个背景色和字体粗细:

#!/bin/bash# prints a color table of 8bg * 8fg * 2 states (regular/bold)echoecho Table for 16-color terminal escape sequences.echo Replace ESC with \\033 in bash.echoecho "Background | Foreground colors"echo "---------------------------------------------------------------------"for((bg=40;bg<=47;bg++)); do for((bold=0;bold<=1;bold++)) do  echo -en "\033[0m"" ESC[${bg}m   | "  for((fg=30;fg<=37;fg++)); do   if [ $bold == "0" ]; then    echo -en "\033[${bg}m\033[${fg}m [${fg}m  "   else    echo -en "\033[${bg}m\033[1;${fg}m [1;${fg}m"   fi  done  echo -e "\033[0m" done echo "--------------------------------------------------------------------- "doneechoecho

以上脚本运行后会输出以下结果,横向的 8 个颜色是前景色([30m - [37m),并且有一个1;前缀表示为粗体,没有这个前缀就是正常大小字体,纵向的 8 个颜色是背景色([40m - [47m),[0m表示重置设置:

根据这个color table,就可以用命令来控制显示terminal中的文字颜色,也正是利用这个原理,可以控制应用日志中不同类型的内容,用不同的颜色来显示,可以对日志内容一目了然:

 ruby -e 'print "\e[33m"' ruby -e 'print "\e[0m"' ruby -e 'print "\e[1m"' printf "\e[0m" echo -e "\e[1m" echo -e '\033[44m\033[32mgreen on purple' echo -e '\033[42m\033[1;34mbold purple on green' echo -e "\033[47m\033[1;31mBright red on white.\033[0m"