加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在stderr的Windows上更改文本输出颜色

发布时间:2020-12-14 01:43:16 所属栏目:Windows 来源:网络整理
导读:我最近发现了一个帖子给出了一个解决方案,让stderr的文本输出为 Linux(bash)的不同颜色 他们创建了以下bash脚本脚本 #!/bin/bash{ $* 213|sed 's,.*,x1B[33mx1B[0m,'2;} 31 这会导致输出在来自stderr时打印黄色文本. stdout仍然打印相同的颜色. 该脚本保存
我最近发现了一个帖子给出了一个解决方案,让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文件:
@Echo Off
(((%* 1>&3) 2>&1) | "c:Program Files (x86)GnuWin32binsed.exe" "s," 1>&2) 3>&1

不幸的是,流混合在一起(在某些行上,stdout和stderr中的字符在一行中混合在一起).也许这种行为取决于所使用的sed.exe版本,所以试一试.

如果这不起作用,请考虑使用最低cygwin安装.我测试了你的color.sh脚本,我能够启动一个.bat文件,它可以正常工作而不会混合流.我使用的语法是:

./color.sh cmd /c test.bat

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读