shell中更改echo或printf的输出颜色可以使用相应的ANSI转义码(ANSI Escape Codes)来实现:各种常用颜色的ANSI如下所示,截图来自于 geeksforgeeks.org
八进制格式应采用以下格式给出:八进制格式必须以名为\033[的参数为前缀,后跟需要指定的颜色的code
Red='\033[0;31m'
所有ANSI转义码都以转义字符开头,可以用多种格式表示:十进制的27、十六进制的\x1B或八进制格式的\033,后紧跟一个控制键[(表示不可打印字符序列的开始)
ANSI代码不仅限于颜色,还可以应用于样式:代码0..9代表文本样式,而代码30...37代表颜色。同样,你可以使用代码40..47更改这些文本的背景颜色。
对于无颜色或结束设置,转义字符为:'\033[0m',恢复默认颜色,0为重置
以下为测试代码:
#! /bin/bash
# print the output in red color
RED='\033[0;31m'
echo -e "${RED}RED Colored Statement"
# print the output in green color
GREEN='\033[0;32m'
echo -e "${GREEN}Green Colored Statement"
# print the output in blue color
BLUE='\033[0;34m'
echo -e "${BLUE}BLUE Colored Statement"
echo -e "${RED}csdn addr:${GREEN}https://blog.csdn.net/fengbingchun\n${RED}github addr:${BLUE}https://github.com/fengbingchun"
# For No Color, the escape character is '\033[0m'
echo -e "\033[0mNo Color"
printf "${RED}%s ${GREEN}%s ${BLUE}%s\n" RED GREEN BLUE
echo -e "\e[1;32mLightGreen \e[0mNoColor" # 十进制的27
echo -e "\E[0;33mOrange \E[0mNoColor" # 十进制的27
echo -e "\x1b[1;34mLightBlue \x1b[0mNoColor" # 十六进制的\x1b
echo -e "\x1B[0;36mCyan \x1B[0mNoColor" # 十六进制的\x1B
echo -e "\033[1;31mLightRed \033[0mNoColor" # 八进制格式的\033
echo "test finish"
Windows和Linux下执行结果如下图所示: