shell中echo和printf在终端输出时更改文本颜色

      shell中更改echo或printf的输出颜色可以使用相应的ANSI转义码(ANSI Escape Codes)来实现:各种常用颜色的ANSI如下所示,截图来自于 geeksforgeeks.org

shell中echo和printf在终端输出时更改文本颜色_第1张图片

      八进制格式应采用以下格式给出:八进制格式必须以名为\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下执行结果如下图所示:

shell中echo和printf在终端输出时更改文本颜色_第2张图片

      GitHub:https://github.com/fengbingchun/Linux_Code_Test

你可能感兴趣的:(Shell,shell)