use*_*428 7 linux shell zenity progress-bar
我编写了一个使用7zip备份目录的简单脚本.一切正常,但现在我想添加一些图形反馈,添加一个进度条.我知道我可以这样做zenity但是,无论我尝试什么,我似乎无法使它工作.
我fgrep用来找出一个新文件被压缩的时间("压缩"是7zip在屏幕上打印的每一行的第一个单词),以使栏增加.具体的代码行如下:
7z a -t7z /home/user/Desktop/Backup.7z /home/user/Desktop/folder_to_backup -mx9 | fgrep Compressing | nl | awk '{print $1/$number_of_files*100}' | zenity --progress --percentage=0 --auto-close
Run Code Online (Sandbox Code Playgroud)
运行此操作会使进度条显示,从0开始,但不显示任何进度:操作完成后,条形图突然跳到结尾.
我用谷歌搜索了一段时间,但我发现的唯一的事情zenity progress似乎是有一些问题:D任何帮助都将受到高度赞赏!
小智 5
看起来你没有在输出中获得命令的进度,通过运行没有| zenity --progress --percentage=0 --auto-close管道的命令来检查它.
尝试这样的东西来获得你的输出,apt-get install screen如果你没有安装它,首先你需要:
screen -L bash -c '(while :; do tail ~/screenlog.0 | grep -o "[0-9]*%" | tail -1; done | zenity --progress --auto-close &); 7z a "output.zip" "/path/to/input"'
Run Code Online (Sandbox Code Playgroud)
我将分解命令中最重要的部分:
screen,此标志告诉命令启动新会话并将所有终端输出记录到文件中~/screenlog.0.COMMAND1它.COMMAND2在后台启动的子shell .FILE.