Tar 压缩 Zenity 进度

Tar compress Zenity progress

我希望显示 Tar 文件夹压缩的进度。

考虑使用以下代码将 Document 文件夹压缩为 bzip2。

(tar -cf - Documents | pv -n -s $(du -sb Documents | awk '{print }') \ 
| bzip2 > test.tar.bz2) | zenity --progress --percentage=0 

在终端中使用pv通过逐行显示百分比来显示进度。

3
9
16
27
...

然而,zenity 不显示进度并保持锁定在 0%。该过程完成后,zenity 显示 100%。 如何纠正我的错误并查看 zenity 的进展?谢谢

pv 报告 stderr 的进度,zenitystdin 读取,因此它永远看不到 pv 报告的内容。当 stdin 关闭时,它切换到 100%。

试试这个,应该可以解决问题:

(tar -cf - Documents | pv -n -s $(du -sb Documents | awk '{print }') \ 
| bzip2 > test.tar.bz2) 2>&1 | zenity --progress --percentage=0