如何将彩色文本存储在变量中并稍后用颜色打印?

如何将彩色文本存储在变量中并稍后用颜色打印?

如果我这样做git status --short,git 会列出未跟踪的文件,前面带有两个红色问号:

在此输入图像描述

我试图将其存储在一个变量中,并稍后用颜色打印它。这是我的 bash 脚本:

#!/bin/bash
status=$(git status --short)
echo -e "$status"

我认为该-e标志会导致 bash 对输出进行着色,但它不起作用:

在此输入图像描述

我怎样才能做到这一点?

编辑:可能的重复是询问转义字符(特别是 ANSI 颜色控制序列)如何工作。我想我了解它们是如何工作的。我的问题是如何在脚本输出中保留这些内容。

答案1

默认情况下,大多数产生颜色的程序仅在输出到终端而不是管道或文件时才产生颜色。 一般来说,这是一件好事。 然而,通常有一个超驰开关。例如,对于ls,可以使用--color=alwaysand ,因此颜色可以保存在 shell 变量中。例如:

在此输入图像描述

grep也支持该--colors=always选项。

对于git来说,相应的选项是它的color.ui配置设置:

git -c color.ui=always status

相关内容