在 printf 中使用颜色

新手上路,请多包涵

当这样写时,它以蓝色输出文本:

 printf "\e[1;34mThis is a blue text.\e[0m"

但我想在 printf 中定义格式:

 printf '%-6s' "This is text"

现在我尝试了几个如何添加颜色的选项,但没有成功:

 printf '%-6s' "\e[1;34mThis is text\e[0m"

我什至尝试将属性代码添加到格式中,但没有成功。这不起作用,我在任何地方都找不到将颜色添加到 printf 的示例,它在我的情况下定义了格式。

原文由 Jernej Jerin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 664
2 个回答

您将这些部分混合在一起,而不是干净地分开它们。

 printf '\e[1;34m%-6s\e[m' "This is text"

基本上,将固定的东西放在格式中,将可变的东西放在参数中。

原文由 geekosaur 发布,翻译遵循 CC BY-SA 2.5 许可协议

我可以建议以下替代方案,而不是使用过时的终端代码。它不仅提供了更具可读性的代码,而且还允许您将颜色信息与格式说明符分开,就像您最初想要的那样。

 blue=$(tput setaf 4)
normal=$(tput sgr0)

printf "%40s\n" "${blue}This text is blue${normal}"

此处 查看我的答案以获取其他颜色

原文由 SiegeX 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题