私はdialog
それをインストールし、次のようなクールな進捗ダイアログがあります。
+-------[ title ]--------+
| |
| +-[ console output ]-+ |
| | output line11 ^ |
| | output line12 | |
| | output line13 | |
| | output line14 # |
| | output line15 | |
| | output line16 v |
| +--------------------+ |
| #########80%#####::::: |
+------------------------+
たとえば、ディストリビューションで5つのパッケージをアップグレードすると、進行状況(ここでは5つのパッケージのうち4つがアップグレードされた、つまり80%)が表示されますが、実行されたコマンドの詳細な出力が表示されます。可能ですか?
--tailboxbg
私はこれが本当だと思いますが、動作するソリューションを使用または取得できません--gauge
。
ベストアンサー1
はい、次のことができます--gauge
。
#!/bin/bash
declare PACKAGES=("/etc/crontab" "/etc/dmtab" "/etc/fstab" "/etc/inittab" "/etc/mtab")
NUM_PACKAGES=${#PACKAGES[*]} # no. of packages to update (#packages in the array $PACKAGES)
step=$((100/$NUM_PACKAGES)) # progress bar step
cur_file_idx=0
counter=0
DEST=${HOME}
(
# infinite while loop
while :
do
cat <<EOF
XXX
$counter
$counter% upgraded
$COMMAND
XXX
EOF
COMMAND="cp ${PACKAGES[$cur_file_idx]} $DEST &>/dev/null" # sets/updates command to exec.
[[ $NUM_PACKAGES -lt $cur_file_idx ]] && $COMMAND # executes command
(( cur_file_idx+=1 )) # increase counter
(( counter+=step ))
[ $counter -gt 100 ] && break # break when reach the 100% (or greater
# since Bash only does integer arithmetic)
sleep 10 # delay it a specified amount of time i.e. 1 sec
done
) |
dialog --title "File upgrade" --gauge "Please wait..." 10 70 0
このコードが実際に行うことは次のとおりです。
ノート。このコードは実際にこの5つのファイルをフォルダにコピー/etc/
します$HOME
。