📜  引导颜色 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:54:12.976000             🧑  作者: Mango

引导颜色 - Shell-Bash

在Shell脚本中,我们可能需要输出多种不同颜色的文字,以便区分不同的信息类型。这就需要用到引导颜色(也称为ANSI转义序列)。

引导颜色的基本语法

引导颜色的基本语法为\033[显示方式;前景色;背景色m,其中:

  • \033是转义字符,用于告诉终端后面的内容是引导颜色;
  • 显示方式包括以下选项(多个选项可以组合使用,中间用;隔开):
    • 0:关闭所有属性;
    • 1:设置高亮度(加粗);
    • 4:下划线(未广泛支持);
    • 5:闪烁(未广泛支持);
    • 7:反显;
    • 8:消隐(通常是用来作密码输入的,输入时不显示所输入文字);
  • 前景色包括以下选项:
    • 30:黑色;
    • 31:红色;
    • 32:绿色;
    • 33:黄色;
    • 34:蓝色;
    • 35:紫色;
    • 36:青色;
    • 37:白色;
  • 背景色包括以下选项:
    • 40:黑色;
    • 41:红色;
    • 42:绿色;
    • 43:黄色;
    • 44:蓝色;
    • 45:紫色;
    • 46:青色;
    • 47:白色。
引导颜色的使用示例

下面是一些使用示例:

echo -e "\033[32mHello, World!\033[0m" # 绿色
echo -e "\033[41;37mError!\033[0m" # 红底白字
echo -e "\033[1;31;47mWarning!\033[0m" # 红色底色、白色字体、加粗

注意,在使用引导颜色时,需要使用echo -e指令才能生效。

其他引导颜色

除了前面介绍的基本引导颜色外,还存在一些其他的引导颜色,比如:

  • 渐变颜色:\033[38;5;颜色编号m
  • RGB颜色:\033[38;2;r;g;bm
引导颜色的封装

为了方便在代码中使用引导颜色,我们可以将引导颜色封装成函数,具体实现如下:

#!/bin/bash

function color_echo() {
    if [ $# -lt 2 ]; then
        echo "Usage: color_echo color message"
        return
    fi

    local color="$1"
    shift

    case "${color}" in
        black|red|green|yellow|blue|purple|cyan|white)
            eval "local c=\$${color}"
            ;;
        *)
            echo "Unknown color: ${color}"
            return
            ;;
    esac

    echo -e "${c}$@\033[0m"
}

# 定义颜色
black="\033[30m"
red="\033[31m"
green="\033[32m"
yellow="\033[33m"
blue="\033[34m"
purple="\033[35m"
cyan="\033[36m"
white="\033[37m"

# 使用示例
color_echo red "Error!"
color_echo green "Success!"
color_echo yellow "Warning!"
color_echo blue "Info!"

上面的代码将引导颜色封装成了color_echo函数,通过传入不同的颜色和消息参数调用该函数就可以显示不同颜色的文字了。