Linux shell 也可以花里胡哨

原理

可以利用ANSI escape code 实现linux终端输出颜色文本。下面是几个ANSI escape code 对应的颜色。

Black        0;30     Dark Gray     1;30
Red          0;31     Light Red     1;31
Green        0;32     Light Green   1;32
Brown/Orange 0;33     Yellow        1;33
Blue         0;34     Light Blue    1;34
Purple       0;35     Light Purple  1;35
Cyan         0;36     Light Cyan    1;36
Light Gray   0;37     White         1;37

示例

以下是一个输出ANSI Rainbow 的示例。

#!/bin/bash
for (( i = 30; i < 38; i++ ))
do
	echo -e "\033[0;"$i"m Normal: (0;$i); \033[1;"$i"m Light: (1;$i)";
done

输出结果如下
avatar
如果想设置固定区间的颜色,可以将'\033[0m'放在对应区间的结尾。如下示例

#!/bin/bash
NC='\033[0m' # No Color
for (( i = 30; i < 38; i++ ))
do
    echo -e "I \033[0;${i}mlove${NC} Linux"
done

输出结果如下
avatar