控制台的彩色文本

Colored text to the console

提问人:Alejandro Bermúdez 提问时间:4/11/2023 更新时间:4/18/2023 访问量:119

问:

如何将彩色文本回显到控制台?

在 Powershell 中,我可以这样做:

write-host _info_ -fore 黄色 -back 蓝色

write-host _error_ -fore 黄色 -back 红色

write-host _warning_ -fore 白色 -back DarkYellow

write-host _succes_ -fore 黄色 -back 绿色

write-host verde -fore 黄色 -返回 绿色 -nonewline ;写主机 blanco -fore black -back white -nonewline ;write-host rojo -fore yellow -back 红色

我怎样才能对 nushell 做同样的事情?

enter image description here

提前致谢。

我在您的文档中没有找到此信息。

nushell的

评论

1赞 Paul Dempsey 4/11/2023
颜色格式是 shell 输出到的终端的问题。您可以在以下位置找到答案: github.com/nushell/nu-ansi-term (nushell ANSI 终端)
0赞 Alejandro Bermúdez 4/11/2023
现在我找到了答案: $'(ansi { fg: y bg: g attr: b }) verde (ansi { fg: b bg: w attr: b }) blanco (ansi { fg: y bg: r attr: b }) rojo' 谢谢你的帮助。

答:

1赞 Darren 4/18/2023 #1

有几种方法可以做到这一点。您已经发现了该命令,但您也可以使用转义和插值字符串来执行此操作。ansi

下面是一个使用带有插值的命令的示例,使用ansi$""

echo $"(ansi red)Nushell(ansi reset)"

现在要查看“引擎盖下”发生了什么,您可以运行此命令。

echo $"(ansi red)Nushell(ansi reset)" | debug -r

这导致了这样的事情。

String {
    val: "\u{1b}[31mNushell\u{1b}[0m",
    span: Span {
        start: 277827,
        end: 277859,
    },
}

现在更容易看出有 ansi 逃脱使这一切发生。所以,这意味着我们可以用相同的结果做这样的事情。

echo "\e[31mNushell\e[0m"

这里的关键是,在 nushell 中,双引号意味着翻译转义。如果您要使用单引号或反引号,则只会得到一个字符串而不是红色字符串。