如何强制 echo 的输出颜色遵循 bash 脚本中定义的颜色?
How to force the output color of echo to follow colors defined in bash script?
我在 bash 脚本中使用 ANSI 转义码来更改回显命令的颜色
#/bin/bash
cecho() {
local code="3["
case "" in
black | bk) color="${code}0;30m";;
red | r) color="${code}1;31m";;
green | g) color="${code}1;32m";;
yellow | y) color="${code}1;33m";;
blue | b) color="${code}1;34m";;
purple | p) color="${code}1;35m";;
cyan | c) color="${code}1;36m";;
gray | gr) color="${code}0;37m";;
*) local text=""
esac
[ -z "$text" ] && local text="$color${code}0m"
echo -e "$text"
}
cecho b "This is blue"
cecho r "This is red"
问题是我使用的是终端配色方案,它会导致 cecho 命令显示错误的颜色,例如。如果我尝试输出紫色的 cecho 命令,它会显示为黄色。我认为我的内部终端颜色方案与这些 ANSI 颜色代码冲突。是否可以以某种方式覆盖任何内部配色方案并强制显示 bash 脚本中定义的颜色?回声显示错误的颜色也可能是由于其他原因造成的,与内部配色方案冲突只是我的猜测。
在我的配色方案中,在使用 ANSI 颜色代码时,有一些为不同 colors.So 预定义的变量,它被这些全局定义的颜色覆盖。删除所有那些内部定义的颜色显然已经解决了这个问题
我在 bash 脚本中使用 ANSI 转义码来更改回显命令的颜色
#/bin/bash
cecho() {
local code="3["
case "" in
black | bk) color="${code}0;30m";;
red | r) color="${code}1;31m";;
green | g) color="${code}1;32m";;
yellow | y) color="${code}1;33m";;
blue | b) color="${code}1;34m";;
purple | p) color="${code}1;35m";;
cyan | c) color="${code}1;36m";;
gray | gr) color="${code}0;37m";;
*) local text=""
esac
[ -z "$text" ] && local text="$color${code}0m"
echo -e "$text"
}
cecho b "This is blue"
cecho r "This is red"
问题是我使用的是终端配色方案,它会导致 cecho 命令显示错误的颜色,例如。如果我尝试输出紫色的 cecho 命令,它会显示为黄色。我认为我的内部终端颜色方案与这些 ANSI 颜色代码冲突。是否可以以某种方式覆盖任何内部配色方案并强制显示 bash 脚本中定义的颜色?回声显示错误的颜色也可能是由于其他原因造成的,与内部配色方案冲突只是我的猜测。
在我的配色方案中,在使用 ANSI 颜色代码时,有一些为不同 colors.So 预定义的变量,它被这些全局定义的颜色覆盖。删除所有那些内部定义的颜色显然已经解决了这个问题