Создание обратного отсчета с PV
После этого вопроса 2013 года при отображении обратного отсчета в терминале я хотел бы немного улучшить ответ, используя pv
чтобы показать бар прогрессии.
Вот мой текущий сценарий.
function countdown {
date1=$((`date +%s` + $1));
while [ "$date1" -ge `date +%s` ]; do
echo -ne "$(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r";
sleep 0.1
done
}
# 7 minutes countdown
countdown $((7*60))
Как мне улучшить это с pv
? Похоже, что он отслеживает записанные данные измерения прогресса. В моем случае мне просто нужно подождать, и у меня нет показателей для измерения.
Может быть, есть лучшие альтернативы с 2018 года?
Благодарю.
2 ответа
Просто сделай это так с pv
, записывая один байт символа каждую секунду.
secs=$((7 * 60))
while [ $secs -gt 0 ]
do
echo -n "."
sleep 1
: $((secs--))
done | pv -s $secs > /dev/null
echo -n
для
-n do not output the trailing newline
pv -s
для
-s, --size SIZE set estimated data size to SIZE bytes
sleep 1; : $((secs--))
уменьшить значение $secs
каждую 1 секунду
Вы не можете улучшить это с pv
, pv
расшифровывается как Pipe View и отслеживает ход потока данных. Зная размер и измеряя количество данных, проходящих через него, он может дать вам оценку оставшегося времени. Если вам нужен таймер обратного отсчета, pv
бесполезно.
У вас уже есть что-то написанное, что можно украсить. Другие сценарии для ваших нужд существуют в Интернете: http://handybashscripts.blogspot.com/2012/01/simple-timer-with-progress-bar.html