Whiptail是为您执行此操作的工具。在您的任务完成时,让它为您显示进度条或其他信息是相当容易的。
事实上,它是 Debian 和许多其他发行版使用的工具,与您使用的环境完全相同。
这是我们用来使 aptitude 安装看起来更友好的代码的简化版本:
pkg=0
setterm -msg off # Disable kernel messages to this terminal
setterm -blank 0 # Disable screen blanking
aptitude -y install <list of packages> | \
tr '[:upper:]' '[:lower:]' | \
while read x; do
case $x in
*upgraded*newly*)
u=${x%% *}
n=${x%% newly installed*}
n=${n##*upgraded, }
r=${x%% to remove*}
r=${r##*installed, }
pkgs=$((u*2+n*2+r))
pkg=0
;;
unpacking*|setting\ up*|removing*\ ...)
if [ $pkgs -gt 0 ]; then
pkg=$((pkg+1))
x=${x%% (*}
x=${x%% ...}
x=$(echo ${x:0:1} | tr '[:lower:]' '[:upper:]')${x:1}
printf "XXX\n$((pkg*100/pkgs))\n${x} ...\nXXX\n$((pkg*100/pkgs))\n"
fi
;;
esac
done | whiptail --title "Installing Packages" \
--gauge "Preparing installation..." 7 70 0
setterm -msg on # Re-enable kernel messages
invoke-rc.d kbd restart # Restore screen blaking to default setting