Redirect 将终端动态输出重定向到文件

Redirect 将终端动态输出重定向到文件,redirect,terminal,pipe,Redirect,Terminal,Pipe,我想在MacOS上安装zerodisk时获取diskutil命令的进程进度值 我在终端上运行以下命令: diskutil zerodisk disk2 并输出进度值: Started erase on disk2 [ - 0%..10%......................................... ] 15% ... Started erase on disk2 Finished erase on disk2 但当我通过命

我想在MacOS上安装zerodisk时获取diskutil命令的进程进度值

我在终端上运行以下命令:

    diskutil zerodisk disk2
并输出进度值:

    Started erase on disk2
    [ - 0%..10%......................................... ] 15%
    ...
    Started erase on disk2
    Finished erase on disk2
但当我通过命令将结果字符串输出到文件时:

    diskutil zerodisk disk2 > output.txt
文件ouput.txt的内容没有进度值:

    Started erase on disk2
    [ - 0%..10%......................................... ] 15%
    ...
    Started erase on disk2
    Finished erase on disk2

有人能告诉我为什么吗?有没有办法获得擦除进度值?

在shell上重定向I/O会修改许多应用程序的行为。使用
script
在不受干扰的情况下捕获到终端的所有输出:

script
diskutil zerodisk disk2
exit
输出将在名为
typescript
的文件中。您可以使用,例如


生成的
redirect.txt
将包含发送到终端的所有字符,包括回车。

在shell上重定向I/O会修改许多应用程序的行为。使用
script
在不受干扰的情况下捕获到终端的所有输出:

script
diskutil zerodisk disk2
exit
输出将在名为
typescript
的文件中。您可以使用,例如


生成的
redirect.txt
将包含发送到终端的所有字符,包括回车。

是否将其写入STDERR?请尝试,
diskutil zerodisk disk2>output.txt 2>&1
。我认为对于这样的进度条,它可能会
退格
整行,然后重新绘制。所以,它是在写,然后擦除,然后写入,然后擦除…它是在写给STDERR吗?请尝试,
diskutil zerodisk disk2>output.txt 2>&1
。我认为对于这样的进度条,它可能会
退格
整行,然后重新绘制。所以,它是写,然后擦,然后写,然后擦。。。