📅  最后修改于: 2023-12-03 14:54:12.976000             🧑  作者: Mango
在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
;\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
函数,通过传入不同的颜色和消息参数调用该函数就可以显示不同颜色的文字了。