bash
Сценарий оболочки, использующий pv
для непрерывного отображения прогресса pv
sudo apt install pv # in Debian and Ubuntu, other commands in other distros
#!/bin/bash
# if only files (if directories, you may need another command)
cnt=0
for i in dir/*
do
cnt=$((cnt+1))
done
files="$cnt"
> log
> err
for i in dir/*
do
ls "$i" >> log 2>> err # simulating the actual process
sleep 2 # simulating the actual process
echo "$i"
done | pv -l -s "$files" > /dev/null # progress view using lines with $i
В процессе
$./pver
2.00 0:00:06 [0,00 /s] [===============> ] 40% ETA 0:00:09
После финиша
$./pver
5.00 0:00:10 [ 499m/s] [======================================>] 100%
bash
Сценарий оболочки для отображения текущего состояния выполнения по запросу for
цикл в фоновом режиме, запустить program
и счетчикcnt
while
цикл ищет ввод символа (если c
, то расскажите о прогрессе)Индикатора выполнения нет, но в любое время вы можете получить обновление статуса о ходе выполнения.
#!/bin/bash
cnt=0
echo "0" > clog
program () {
ls "$1"
sleep 5
}
# main
files=$(ls -1 dir|wc -l)
for i in dir/*
do
program "$i"
cnt=$((cnt+1))
echo "$cnt" > clog
done > log &
while [ "$cnt" != "$files" ]
do
cnt=$(cat clog)
read -sn1 -t1 chr
if [ "$chr" == "c" ]
then
echo "$cnt of $files files processed; running..."
fi
done
echo "$cnt of $files files processed; finished :-)"
$./loop
0 of 5 files processed; running...
3 of 5 files processed; running...
5 of 5 files processed; finished :-)
$ cat log
dir/file1
dir/file2
dir/file3
dir/file4
dir/file w space