linux - 如何通过管道将终端命令输出到 Zenity 进度对话框文本?
问题描述
例如,我有一个带有一些 bash 命令的简单应用程序,apt update
我想将其输出通过管道传递到--text
zenity Progress 对话框中的参数,我在谷歌搜索后尝试了一些选项,例如:
gksudo apt update | xargs -L1 -I % zenity --progress --text=% --percentage=0 --auto-close --auto-kill
但我得到的只是闪烁的窗口!
那么,如何使输出以进度百分比显示在 zenity 窗口中?
解决方案
您不能使用进度百分比使输出出现在 zenity 窗口中apt update
,因为对于百分比计算,需要达到 100 % 的信息,而这里事先不知道该命令将生成多少输出。
您可以做的是在apt update
输出内容时有一个动画进度条。由于管道的标准输出通常是完全缓冲的,因此必须使用以下命令更改缓冲stdbuf
:
gksudo stdbuf -oL apt update | zenity --progress --pulsate --auto-close --auto-kill
推荐阅读
- python - ModuleNotFoundError:没有名为“darkflow”的模块
- java - 从 JDateChooser 中选择的日期增量
- javascript - 等待所有文件更新,然后下载它们
- javascript - 为我的 JSON 构建一个包含行和列跨度的表
- imagemagick - 使用 Image Magick 生成低分辨率黑白文本
- powershell - 如何在 PowerShell 中使用 Get-WinEvent 返回 TaskDisplayName = 'Boot Performance Monitoring' 的过滤事件日志条目
- c - 在C中仅使用一个变量来添加两个数字
- typo3 - TYPO3:是否可以将单个新闻从 1.4.0 迁移到 6.3.0
- java - 想通过 Git API 和 Java 在 Github 中创建存储库
- python - 将计数器和距离添加到字典