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

Big*_*uge 4 colors bash git shell-script escape-characters

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

在此处输入图片说明

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

#!/bin/bash
status=$(git status --short)
echo -e "$status"
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

我怎样才能做到这一点?

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

Joh*_*024 7

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

在此处输入图片说明

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

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

git -c color.ui=always status
Run Code Online (Sandbox Code Playgroud)

  • 或者直接运行`git -c color.ui=always log`。 (2认同)