Function 如何创建特殊彩色回波的功能?
要打印彩色单词,我可以在shell中执行以下操作:Function 如何创建特殊彩色回波的功能?,function,shell,colors,printf,echo,Function,Shell,Colors,Printf,Echo,要打印彩色单词,我可以在shell中执行以下操作: declare -A COLORS COLORS["red"]='\033[0;31m' COLORS["default"]='\033[0m' echo -e "${COLORS["red"]}abc${COLORS["default"]}" # With color echo -e "xyz" # No color. echo -e "${COLORS["red"]}lmn${COLORS["default"]}" # With c
declare -A COLORS
COLORS["red"]='\033[0;31m'
COLORS["default"]='\033[0m'
echo -e "${COLORS["red"]}abc${COLORS["default"]}" # With color
echo -e "xyz" # No color.
echo -e "${COLORS["red"]}lmn${COLORS["default"]}" # With color
但是,当需要颜色的调试消息到处都是时,复制+粘贴带有颜色的行很难维护
我试着把它放在这样一个函数中:
function RedPrint () {
echo -e "${COLORS["red"]}$1${COLORS["default"]}" >&2
}
很好的一点是红色打印允许全局变量:
G="hahaha"
RedPrint "abc $G foo bar"
RedText "blah blah "${G}" foo foo bar"
但我肯定有一些我没有遇到的警告。功能化的RedPrint
是否与我使用echo-e
的方式相同
问题(部分)是:
- 有没有更简单的方法来操纵shell中的颜色?还有其他选择吗
- 带有
的功能是维护彩色打印的好方法吗?还有什么方法可以编写echo
RedPrint
tput
生成色码,因为tput
在输出值之前会考虑当前终端的能力(更适合跨环境)
例如,您将执行以下操作:
declare -A COLORS
COLORS["red"]=$(tput setaf 1)
COLORS["default"]=$(tput setaf 9)
其中:
Value | Color
-------------
0 | Black
1 | Red
2 | Green
3 | Yellow
4 | Blue
5 | Magenta
6 | Cyan
7 | White
8 | Unused
9 | Default
至于您的函数,只要您可以使用相同的颜色打印整行,并且传递给它的字符串本身没有多种颜色,就应该没有问题