Linux 如何通过管道将终端命令输出到Zenity进度对话框文本?
我有一个简单的应用程序,带有一些bash命令,例如Linux 如何通过管道将终端命令输出到Zenity进度对话框文本?,linux,bash,zenity,Linux,Bash,Zenity,我有一个简单的应用程序,带有一些bash命令,例如apt update,我想通过管道将其输出到zenity Progress对话框中的--text参数,我在谷歌搜索后尝试了一些选项,如: gksudo apt update | xargs -L1 -I % zenity --progress --text=% --percentage=0 --auto-close --auto-kill 但我得到的只是闪烁的窗户 那么,如何使输出以进度百分比显示在zenity窗口中?您不能使输出以进度百分比
apt update
,我想通过管道将其输出到zenity Progress对话框中的--text
参数,我在谷歌搜索后尝试了一些选项,如:
gksudo apt update | xargs -L1 -I % zenity --progress --text=% --percentage=0 --auto-close --auto-kill
但我得到的只是闪烁的窗户
那么,如何使输出以进度百分比显示在zenity窗口中?您不能使输出以进度百分比显示在zenity窗口中,因为百分比计算需要100%的信息,在这里,apt update
命令将生成多少输出是未知的
您可以做的是在apt update
输出内容时设置一个动画进度条。由于管道的标准输出通常是完全缓冲的,因此必须使用stdbuf更改缓冲:
gksudo stdbuf -oL apt update | zenity --progress --pulsate --auto-close --auto-kill
理论上,您可以通过检查到目前为止有多少来自
apt cache policy
的URL被检查,从apt update
的输出计算当前进度。但是,只有在命令完成后才能显示apt update的输出(此处缺少),因此进度条中没有点。