gpt4 book ai didi

windows - 为 stderr 更改 Windows 上的文本输出颜色

转载 作者:可可西里 更新时间:2023-11-01 13:20:14 26 4
gpt4 key购买 nike

我最近发现一篇文章给出了一个解决方案,让 stderr 的文本输出为 Linux (bash) 的不同颜色

他们创建了以下 bash 脚本脚本

#!/bin/bash
{ $* 2>&1>&3|sed 's,.*,\x1B[33m&\x1B[0m,'>&2;} 3>&1

当它来自 stderr 时,这会导致输出打印黄色文本。 stdout 仍然打印相同的颜色。

脚本保存在 $PATH 中名为 color 的目录中。这允许我使用 make 或 scons 运行脚本,它会将来自 stderr 的所有文本高亮显示为黄色。 (可以通过将 33m 更改为 31m 使文本变为红色)

color make CPU=x64 

这对于在编译时发现错误非常有用。

是否有可用于 Windows cmd shell 的类似脚本?

注意:如果有帮助,我已经在我的 Windows 计算机上安装了 sed。

最佳答案

关于 Windows 的 cmd.exe 下对 ANSI 转义码的支持,参见 ansicon .将重定向逻辑转换为 cmd.exe 语法后,我准备了以下 color.bat 文件:

@Echo Off
(((%* 1>&3) 2>&1) | "c:\Program Files (x86)\GnuWin32\bin\sed.exe" "s,.*,\x1B[33m&\x1B[0m," 1>&2) 3>&1

不幸的是,流混合在一起(在某些行中,来自 stdout 和 stderr 的字符在一行中混合在一起)。也许此行为取决于所使用的 sed.exe 版本,因此请尝试一下。

如果这不起作用,请考虑使用最小值 cygwin安装。我测试了您的 color.sh 脚本,我能够启动 .bat 文件并且它在不混合流的情况下正常工作。我使用的语法是:

./color.sh cmd /c test.bat

关于windows - 为 stderr 更改 Windows 上的文本输出颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com