首页 > 解决方案 > 如何通过管道将终端命令输出到 Zenity 进度对话框文本?

问题描述

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

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

但我得到的只是闪烁的窗口!

那么,如何使输出以进度百分比显示在 zenity 窗口中?

标签: linuxbashzenity

解决方案


您不能使用进度百分比使输出出现在 zenity 窗口中apt update,因为对于百分比计算,需要达到 100 % 的信息,而这里事先不知道该命令将生成多少输出。

您可以做的是在apt update输出内容时有一个动画进度条。由于管道的标准输出通常是完全缓冲的,因此必须使用以下命令更改缓冲stdbuf

gksudo stdbuf -oL apt update | zenity --progress --pulsate --auto-close --auto-kill

推荐阅读