如何读取带有颜色属性的命令输出?

时间:2019-02-01 09:15:57

标签: go terminal

是否可以读取带有其颜色属性的命令输出。我的意思是,我们可以读取实际的转义序列吗?

例如; 命令输出为红色:

Hello

我想读为:

\033[31;1;4mHello\033[0m

目前,我的阅读方式如下:

func stat(hash string) string {
    cmd := exec.Command("git", "show", "--stat", hash)
    out, err := cmd.Output()
    if err != nil {
        return err.Error()
    }
    return string(out)
}

1 个答案:

答案 0 :(得分:2)

使用github.com/kr/pty库在pty中运行命令

这对我有用

转义序列在输出中可见

package main

import (
    "github.com/kr/pty"
    "io"
    "os"
    "os/exec"
)

func main() {
    hash := os.Args[1]
    cmd := exec.Command("git", "show", "--stat", hash)
    f, err := pty.Start(cmd)
    if err != nil {
        panic(err)
    }

    io.Copy(os.Stdout, f)
}