我最近发现了一个帖子给出了一个解决方案,让stderr的文本输出为
Linux(bash)的不同颜色
他们创建了以下bash脚本脚本
#!/bin/bash { $* 2>&1>&3|sed 's,.*,\x1B[33m&\x1B[0m,'>&2;} 3>&1
这会导致输出在来自stderr时打印黄色文本. stdout仍然打印相同的颜色.
该脚本保存在名为color的$PATH目录中.这允许我使用make或scons运行脚本,并且它将以黄色显示来自stderr的所有文本. (可以通过将33米改为31米来使文字变红)
color make cpu=x64
这对于在编译时发现错误非常有用.
是否有类似的脚本可用于Windows cmd shell?
注意:如果有帮助,我已经在我的Windows计算机上安装了sed.
至于Windows’cmd.exe下对ANSI转义码的支持,请参阅
ansicon.将转发逻辑转换为cmd.exe语法后,我准备了以下color.bat文件:
原文链接:https://www.f2er.com/windows/363534.html@Echo Off (((%* 1>&3) 2>&1) | "c:\Program Files (x86)\GnuWin32\bin\sed.exe" "s," 1>&2) 3>&1
不幸的是,流混合在一起(在某些行上,stdout和stderr中的字符在一行中混合在一起).也许这种行为取决于所使用的sed.exe版本,所以试一试.
如果这不起作用,请考虑使用最低cygwin安装.我测试了你的color.sh脚本,我能够启动一个.bat文件,它可以正常工作而不会混合流.我使用的语法是:
./color.sh cmd /c test.bat