lew*_*tan 5 math bash time timer bash-function
我创建了一个简单的秒表(bash函数)来计算时间,但是现在它以毫秒显示当前时间.
代码:
function stopwatch() {
date +%H:%M:%S:%N
while true; do echo -ne "`date +%H:%M:%S:%N`\r"; done;
}
Run Code Online (Sandbox Code Playgroud)
我尝试按照这个答案中的解释改变它,但它仅适用于自Unix Epoch以来的第二个.
当我使用date格式时+%s.%N,由于bash减法只取整数这一事实,上面答案的减法停止了.
如何解决它并有一个终端秒表打印时间如下:
0.000000000
0.123123123
0.435345345
(and so on..)
Run Code Online (Sandbox Code Playgroud)
?
小智 12
time cat
Run Code Online (Sandbox Code Playgroud)
然后按Ctrl-c或Ctrl-d停止计时器并显示时间。第一个数字是时间。
我将其进一步细化为这个 bash 别名
alias stopwatch="echo Press Ctrl-c to stop the timer; TIMEFORMAT=%R; time cat; unset TIMEFORMAT"
Run Code Online (Sandbox Code Playgroud)
如果你想要一些简单的东西,包括分钟,秒和厘秒,就像传统的秒表,你可以使用sw.

wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
Run Code Online (Sandbox Code Playgroud)
# start a stopwatch from 0, save start time in ~/.sw
sw
# resume the last run stopwatch
sw --resume
Run Code Online (Sandbox Code Playgroud)
可能一天工作的一种可能的(&hacky)机制:
$ now=$(date +%s)sec
$ while true; do
printf "%s\r" $(TZ=UTC date --date now-$now +%H:%M:%S.%N)
sleep 0.1
done
Run Code Online (Sandbox Code Playgroud)
注意:这是一个快速修复。应该有更好的解决方案...