Bash 将“交互式”输出重定向到特殊文件

Bash 将“交互式”输出重定向到特殊文件

我想重定向例如输出,即pvto的进度条/dev/tty1

 ...  | pv -perts 100G |  ... 2> /dev/tty1

但我得到的是,每当进度条更新时,它都会在新行中更新,而旧状态仍保留在上面的行中。

有没有办法让它刷新?我听说过,col但我认为它会在输出完成后打印,当然,这不适合直观地跟踪进度。

答案1

我假设 tty 和 pty 的行为相同。我现在只能访问后者。

尝试这个...

... | pv --force -perts 100G 2> /dev/tty1 | ...

/dev/tty1在我的测试中,即使我从不同的终端运行它,进度条也会在关联的终端中正常呈现。

(我必须添加,--force即使pv手册页说只有在标准错误没有指向终端时才有必要。我使用了伪终端,所以也许它不认为它们是相同的。如果没有它就可以工作,请将其关闭。)


一个例子贯穿...

cat file_250M | pv --force -perts 250M 2> /dev/pty7 | wc

“本地”终端:

0       0 262144000

/dev/pty7 终端(单个不断变化的线路):

0:00:06 [36.7MiB/s] [======================================================================>] 100%

相关内容