如何将终端命令输出通过管道传输到 Zenity Progress 对话框文本?

How To Piped Terminal Command Output To Zenity Progress Dialog Text?

我有一个带有一些 bash 命令的简单应用程序,例如 apt update,我想将其输出通过管道传输到 zenity Progress 对话框中的 --text 参数,我尝试了一些选项谷歌搜索后喜欢:

gksudo apt update | xargs -L1 -I % zenity --progress --text=% --percentage=0 --auto-close --auto-kill 

但我得到的只是眨眼window!

那么,我怎样才能使输出出现在 zenity window 中并带有进度百分比?

您不能使输出显示在 zenity window 中,进度百分比,因为对于百分比计算,需要等于 100% 的信息,在这里事先不知道 apt update 命令会产生多少输出。

您可以做的是在 apt update 输出某些内容时使用动画进度条。由于管道的标准输出通常是完全缓冲的,因此必须使用 stdbuf:

更改缓冲
gksudo stdbuf -oL apt update | zenity --progress --pulsate --auto-close --auto-kill