Bash 用pv制作倒计时条

Bash 用pv制作倒计时条,bash,sleep,pv,Bash,Sleep,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

在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年,也许有最好的替代方案


谢谢。

你不能用
pv
来改善这一点
pv
代表管道视图,它跟踪数据流的进度。了解数据的大小并测量通过它的数据量,它可以为您估计剩余时间。 如果您只需要一个计时器倒计时,
pv
是无用的


你已经写了一些可以修饰的东西。web上还存在满足您需要的其他脚本:

只需使用
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
  -s, --size SIZE          set estimated data size to SIZE bytes
pv-s
用于

  -n     do not output the trailing newline
  -s, --size SIZE          set estimated data size to SIZE bytes

sleep 1;:$((秒--)
以每1秒减少
$secs
的值,但我是否可以人工创建一个只需7分钟即可处理的文件?这将是一种过度和不准确的做法。该文件可能会占用太多存储空间,并且时间将取决于底层文件系统的可变速度。也许你可以用这种方式做一些事情,但它不会是准确的,当然,这不是一个改进。或者
curl
一个在7分钟后超时的Web服务?你真的在考虑一个改进,必须实现一个在7分钟后超时的Web服务,而不是一个简单的
睡眠
?我想我可能有一个答案,请看一看。
pv
是一个错误的工具,请看下面的答案。你知道其他工具可以做到这一点吗?从1MB文件开始,除以秒数以获得几个块,然后写入文件并将文件连接回来?这样更好。但是,这就像用锤子钉螺丝一样<代码>秒=10;而[“$secs”-gt 0];做echo-n“;睡眠1;秒=$((秒-1));完成| pv-s“$secs”>/dev/null