对话框中的卷曲进度

对话框中的卷曲进度

如何在对话框窗口中正确显示卷曲进度?

curl http://mysite.corp/image/root_21.tar.bz2 | tar -C /mnt/dest/ -jxf -

在此输入图像描述

我尝试了这个命令,但正如你所看到的,它没有正确显示。

curl -f -x '' -L http://mysite.corp/image/root_21.tar.bz2 | tar -C /mnt/dest -xjpf - --exclude='dev/*' | dialog --backtitle "dialog" --stderr --title 'Linux Image' --textbox /tmp/log 30 80

在此输入图像描述

这个命令几乎对我有帮助,但我希望它覆盖自身,而不是在每行中显示新行进度。基本上我希望它与原始命令显示的相同,但在对话框中。

(curl -f -x '' -L http://mysite.corp/image/root_21.tar.bz2  | tar -C /mnt/dest -xjpf - --exclude='dev/*' ) 2>&1 | dialog  --progressbox 20 120

在此输入图像描述

答案1

您可以使用--progressbox对话框选项,例如

(curl ... | tar ... ) 2>&1 | dialog --progressbox 30 120

2>&1curl将和的 stderr 输出重定向tar到标准输入,即管道到dialog.

不支持行重写(控制字符:CR '\r'(回车)),dialog因此您可以在额外的行中获得每个进度更改。

答案2

使用curl下载并重定向到时柏油,可以打印一个简单的进度:

--checkpoint[=NUMBER] 每 NUMBER 条记录显示进度消息

--checkpoint-action=ACTION 在每个检查点上执行 ACTION

例如,这将下载并提取 gz 文件,同时每 10 个检查点打印点:

curl -s -L $url | tar -xz --checkpoint=.10

要在进度中查看更多详细信息:

  • 如果您不希望curl 有“静默”输出,请从curl 命令中删除“-s”。
  • 将“-v”添加到 tar 命令中,以打印从存档中提取的文件列表。

相关内容