如何在对话框窗口中正确显示卷曲进度?
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>&1
curl
将和的 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 命令中,以打印从存档中提取的文件列表。