为了账号安全,请及时绑定邮箱和手机立即绑定

执行时保留颜色代码

执行时保留颜色代码

Go
拉风的咖菲猫 2021-09-27 16:01:34
作为更大程序的一部分,我正在调用 grep,并将其结果输出到标准输出:// execute grep commandcmd := exec.Command(GREP_BIN_PATH, argArray...)stdout, err := cmd.StdoutPipe()if err != nil {    log.Fatal(err)}stderr, err := cmd.StderrPipe()if err != nil {    log.Fatal(err)}err = cmd.Start()if err != nil {    log.Fatal(err)}go io.Copy(os.Stdout, stdout)go io.Copy(os.Stderr, stderr)cmd.Wait()如果我直接从终端对 grep 进行相同的调用,grep 将输出多色文本(例如,在其输出中以红色突出显示任何匹配项)。做一些研究,似乎grep/其他程序使用特殊的ansi颜色代码来更改颜色突出显示。当我从 go 执行命令时,这些颜色去哪里了?有什么方法可以让我在 go 中执行以保留 ansi 颜色代码,并将输出从 grep 复制到标准输出(类似于此处的帖子,但对于 go)?(我也知道我可以手动重新插入颜色代码。但这看起来很痛苦,我宁愿只是管道 grep 的原始颜色。)如果问题中的某些内容不清楚/需要澄清,请告诉我。谢谢!
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

grep 和大多数其他使用颜色的工具在决定是否使用颜色时会检测它们是否将输出发送到终端。

文件和管道等通常不需要颜色代码,也不知道如何处理它们。

尽管如此,您grep仍然可以使用--color=always标志强制输出颜色。


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信