stdout如何重写选择行?

时间:2019-06-17 08:09:38

标签: go exec stdout

如果您执行docker pull centos:6

示例

  

从库/中心中拉出

     

下载[======>] 9.104MB / 69.84MB

我想实时在golang中打印第二条消息

cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)

stdout, _ := cmd.StdoutPipe()
cmd.Start()
reader := bufio.NewReader(stdout)
for {
    line, _, err := reader.ReadLine()

    if err == io.EOF {
        break
    }

    fmt.Printf("%s \n", line)
}

但是此代码无法重写stdout

在Linux docker excute cli docker pull someimage:sometag

第一行在第二行显示“就绪”消息,然后进行更改 “下载”消息

  

就绪:码头工人拉起fs层(并很快在同一行向下更改)

     

下载:下载[=====================>   57.38MB / 69.84MB

我想在Go中做同样的事情。有人知道一些好方法吗?

  

此问题未重复

     

How to have an in-place string that updates on stdout <-

     

此链接无法释放我的问题,因为它只使用了一行   重写读取下一个标准输出

0 个答案:

没有答案