在 Shell 脚本中抑制进度条

use*_*585 5 shell tee

我正在尝试使用 tee 以整个形式记录脚本。脚本的一部分涉及下载文件,这些文件具有跟踪下载百分比的进度条,我注意到在使用 tee 记录整个脚本后,这个进度条不再出现在终端上。

是否有解决方法可以让进度条再次显示在终端上?

Cha*_*ffy 5

通常,在写入 FIFO(或更一般地,写入没有关联 TTY 的 FD)时,带有进度条等内容的编写良好的程序会抑制此类交互式内容,以使它们的日志更易于阅读或解析,这就是管道的原因totee有它的效果。(使用 stderr 而不是 stdout 作为其进度条的程序可能更具抵抗力,仅当 stderr 是非 TTY 显示时才禁用进度条)。

如果你想假装拥有 TTY,EmPTY 之类的工具可以做到这一点。但是,这意味着所有与进度条相关的 cruft 最终都会出现在您的日志文件中,这会使它既大又难以阅读或解析。

不幸的是,如果您正在运行的软件明确写入允许这样做,那么您只能以两种方式使用它(TTY 的进度条,非条形内容,包括文件的 stderr),如果有的话,这种情况很少发生。