尝试在 bash 中输出颜色时出现问题

尝试在 bash 中输出颜色时出现问题

我有点不明白为什么我需要所有这些反斜杠才能用正确的颜色打印“Hello World”。

xxx@yyy:/tmp$ echo $Red
\033[0;34m
xxx@yyy:/tmp$ echo $Red
\033[0;31m    xxx@yyy:/tmp$ echo -e "Hello ${Red} World" | sed "s/^/\\\\\\${Blue}/g" | xargs echo -e
Hello  World

这是什么原因呢?还有其他更简单的方法可以将颜色融入原始回声中吗?我需要做类似的事情,我会获取一些文本文件,然后在控制台中查看之前尝试输入颜色。

谢谢

答案1

echo如果您所做的只是一次性为整个文本着色,则无需将颜色代码和要输出的文本组合到同一命令中:

red="$(echo -e "\033[0;31m")"
reset="$(echo -e "\033[0m")"
echo "$red"
echo "This text is red."
echo "$reset"

如果您尝试更改嵌入的颜色代码;同样,您不需要删除整个转义序列。要将红色文本更改为黄色,您可以:

echo "$color_festooned_text" | sed 's/;31/;33/g'

相关内容