Делать обратный отсчет с PV - PullRequest
0 голосов
/ 26 августа 2018

После этого вопроса 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 ]

0 голосов
/ 28 августа 2018

Просто сделайте это так с 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второй

0 голосов
/ 26 августа 2018

Вы не можете улучшить это с pv.pv обозначает Pipe View и отслеживает ход потока данных.Зная размер и измеряя количество данных, проходящих через него, он может дать вам оценку оставшегося времени.Если вам нужен таймер обратного отсчета, pv бесполезен.

У вас уже есть что-то написанное, что можно приукрасить.Другие сценарии для ваших нужд существуют в сети: http://handybashscripts.blogspot.com/2012/01/simple-timer-with-progress-bar.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...