Bash脚本-使用printf输出彩色结果

4

大家好,我正在进行一个项目,但是我希望能够以彩色显示输出的文本。

#!/bin/bash
printf "%s" "this is in red";
printf "%s" "this is in default color";
exit 0

这是一个例子,我如何将“这是红色的”显示为红色,并使其余输出文本保留默认颜色?
我查看了一些示例,但它们都是针对echo的,对于printf并不起作用,我真的必须使用echo才能使其正常工作吗?
任何帮助都将是巨大的帮助。谢谢。

3
请阅读Bash How To,其中包含有关颜色设置的详细信息。 - nu11p01n73R
2
它正在使用 echo,printf 能行吗?@martialdidit - WESTKINz
2个回答

11

通过向终端发送ANSI转义序列,可以实现将以下文本以不同颜色显示。 printf 使生成必要的字符序列变得容易,因为它将(除其他内容外)解释\e为ASCII转义字符。

具体来说,你可以通过打印序列\e[31m(包含5个字符:ASCII 27(转义字符)、[31m)告诉终端开始显示红色字符。要告诉终端使用默认颜色(对于终端而言是什么颜色),请输出\e[0m。把它们组合起来:

printf '\e[31m%s\e[0m' "this is in red"
printf "%s" "this is in default color"

谢谢!这绝对帮助我理解了这个概念 :) - WESTKINz

6
尝试下面的示例。
#!/bin/bash
printf "\x1b[31m\"this is in red\"\x1b[0m\n";
printf "this is in default color\n";

输出结果如下:

enter image description here

(本文涉及IT技术相关内容,请以实际情况为准)

谢谢,我会试一下。 - WESTKINz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接