Используйте ниже одну команду лайнера для перечисления команды пакета:
rpm -ql systemd | grep -w 'bin\|sbin' | awk -F '/' '{print $NF}' | xargs man head | grep ' - ' | grep -vi 'No manual' 2> /dev/null
dialog --gauge
В этом демонстрационном сценарии показано, как сделать так, чтобы в диалоговом окне отображался прогресс.
#!/bin/bash
( echo 10;sleep 1;echo 50;sleep 1; echo 90;sleep 1;echo 100;sleep 1 ) | dialog --gauge 'text' 10 60 0
echo '##########'
i=0; while [ $i -le 100 ];do echo "$i";echo "#comment $i";i=$((i+10));sleep 1;done
echo '##########'
i=0; while [ $i -le 100 ];do echo "$i";echo "#comment $i";i=$((i+10));sleep 1;done| dialog --gauge 'text' 10 60 0
dialog
. Это может работать даже с не -числами (текстовыми строками )без префикса с #, но могут быть сюрпризы. Если у вас есть другой вывод, вы должны перехватить его, обработать и передать только соответствующие значения от 0 -100 до dialog
.
Следующий скрипт предполагает известное количество строк вывода(в этом примере 5 )до завершения и использует функцию actor
для подачиdialog
:
#!/bin/bash
expected_outputs=5
ii=0
function two() {
echo "test2-1"; sleep 1;
echo "test2-2"; sleep 1;
echo "test2-3"; sleep 1;
echo "test2-4"; sleep 1;
echo "test2-5"; sleep 1;
}
function actor () {
while read ans
do
echo "# $ans"
ii=$((ii+1))
echo $((ii*100/expected_outputs))
done
}
# main
two | actor
two | actor | dialog --title "Gauge" --gauge "Wait please..." 10 60 0
zenity --progress
В графической среде рабочего стола вы можете использовать следующую соответствующую командную строку сzenity
:
two | actor | zenity --progress --title "Gauge" --text="string" --percentage=0 --auto-close --width=300