玩转shell-如何输出打印有颜色的字体文本_shell

 

前言

shell 中的打印有echoprintf,不过printf就强大了,支持格式化输出,当然我们这里的输出有颜色的文本也是支持的,如果想要echo支持则需要使用echo -e表示支持转义

基本格式

背景底色号码;这部分可以删除,这样就是默认黑色底色了;下面的\033\e一样,所以二者可以互换

默认背景底色号码:40 表示黑色

默认字体颜色号码:37 表示白色

# 基本格式如下
printf "\e[背景底色号码;字体颜色号码m 格式化输出符号 \e[0m" "文本内容";
echo -e "\e[背景底色号码;字体颜色号码m 文本内容 \e[0m";

# 默认情况下命令台的样式
printf "\e[40;37m %s\n \e[0m" "hello world!";
echo -e "\e[40;37m hello world! \e[0m";
颜色数据号码

下面注意字体背景颜色既可以在背景号码中写,也可以在字体颜色号码中写

背景颜色号码

  • 字体背景颜色范围 40-47
    40:黑
    41:深红
    42:绿
    43:黄色
    44:蓝色
    45:紫色
    46:深绿
    47:白色

字体颜色号码

  • 字基本颜色号码 30-37
    30:黑
    31:红
    32:绿
    33:黄
    34:蓝色
    35:紫色
    36:深绿
    37:白色
  • 字体高亮颜色号码 90-97
    90:黑
    91:红
    92:绿
    93:黄
    94:蓝色
    95:紫色
    96:深绿
    97:白色
  • 字背景颜色范围 40-47
    40:黑
    41:深红
    42:绿
    43:黄色
    44:蓝色
    45:紫色
    46:深绿
    47:白色
举例说明
# 显示黑色背景 40,绿色字体 32
printf "\e[40;32m %s\n \e[0m" "hello world";
echo -e "\e[32m hello world \e[0m";

玩转shell-如何输出打印有颜色的字体文本_shell_02
其他的我们需要稍微注意一下的是不管是echo还是printf输出感叹号时候是有问题的(写在 sh 里是没问题的),因为感叹号被识别为一个命令行历史替换符号了,比如!!表示执行上一个命令,在双引号中甚至不能转义,所以我们要这样写echo "hello world"\!或者echo hello world\!