【发布时间】:2019-09-20 17:24:17
【问题描述】:
我正在使用 go 的 exec Run 命令来获取命令输出,当命令 'Stdout' 字段设置为 os.Stdout 并且错误发送到 os.Stderr 时效果很好。
我想将输出和错误输出显示到控制台,但我也想让我的程序看到输出是什么。
然后我创建了自己的 Writer 类型,它就是这样做的,将两者写入缓冲区并打印到终端。
这就是问题所在——一些应用程序在检测到它没有写入 tty 时,会将其输出更改为人类可读性较差的内容。因此,当我以后一种方式进行操作时,我得到的输出会变成丑陋的东西。 (电脑更干净,人类更丑)
我想知道 Go 中是否有某种方法可以说服我正在运行的任何命令我是一个 tty,尽管我不是 os.Stdout/os.Stderr。我知道可以使用 script bash 命令,但是根据 Darwin/Linux 使用不同的标志,所以我试图避免这种情况。
提前致谢!
【问题讨论】: