用pv制作倒计时栏

Making countdown bar with pv

根据 2013 年的这个问题,在 displaying a countdown in a terminal 上,我想使用 pv 显示进度条来改进答案。

这是我当前的脚本。

function countdown {
   date1=$((`date +%s` + ));
   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 年的最佳替代品?

谢谢。

您无法通过 pv 改善这一点。 pv 代表 Pipe View,它跟踪数据流的进度。知道大小并测量通过它的数据量,它可以给你一个剩余时间的估计。 如果你只是需要一个计时器倒计时,pv没用。

你已经有了可以修饰的东西。网络中存在满足您需要的其他脚本:http://handybashscripts.blogspot.com/2012/01/simple-timer-with-progress-bar.html

就这样 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--))每1秒递减$secs的值