我想使用 的输出来shred
制作进度条zenity
。
我的shred
命令如下。
sudo shred -vfn 1 /dev/sda
我是 Linux 新手。所以我可能错过了一个显而易见的解决方案。
答案1
进度条很简单...我猜你问的是如何让它更新并反映输出状态shred
...嗯,你可以使用这样的东西:
shred -vfn 1 file_toshred |& \
while read -r line; do awk '{print $NF+0}' <<<"$line"; done | \
zenity --progress
注意:我出于测试代码的人员的安全原因进行了更改sudo shred -vfn 1 /dev/sda
,shred -vfn 1 file_toshred
但这也可以起作用。
意志|&
管道stderr
(解析shred
输出所需的)以及stdout
Bash ...对于不支持它的其他 shell,您可以改用2>&1
并可能更改这里的字符串(<<<"$line"
) 语法如下echo "$line" | ...
:
shred -vfn 1 file_toshred 2>&1 | \
while read -r line; do echo "$line" | \
awk '{print $NF+0}'; done | \
zenity --progress
要打印输出文本,您可以在循环echo "# $line";
内添加while ...
,并且可能需要扩展zenity
窗口通过如下设置来适应输出--width=
:
shred -vfn 1 file_toshred 2>&1 | \
while read -r line; do echo "$line" | \
awk '{print $NF+0}'; echo "# $line"; done | \
zenity --progress --width="500"