命令date +'%a %b %e %Y%n%I:%M %p'
以格式显示日期和时间:
Thu Sep 22 2016
08:02 PM
我试图想办法在时间变化时更新日期和时间。我唯一能想到的就是做这样的事情:
#!/bin/bash
while true
do
date +'%a %b %e %Y%n%I:%M %p'
done | awk '!seen[$0]++'
这会产生如下输出:
Thu Sep 22 2016
08:02 PM
08:03 PM
08:04 PM
有没有办法通过覆盖旧时间来显示时间变化,以便08:02
在同一行上更改为08:03
,从而使日期和时间显示为常规数字时钟?< / p>
答案 0 :(得分:2)
仅在日期更改时更新第一行,每秒更新第二行:
while :; do
# store start date in variable
printf -v start_day '%(%a %b %e %Y)T'
day=$start_day
clear
echo "$day"
while sleep 1 && [[ $start_day = $day ]]; do
printf -v day '%(%a %b %e %Y)T'
printf '\r%(%I:%M %p)T'
done
done
使用printf %()T
限制了与最近的bash 4.x的兼容性,但大大提高了性能(避免每次我们想要更新时间时都需要启动外部程序)。
答案 1 :(得分:2)
您可以使用tput
移动光标:
date +'%a %b %e %Y%n%I:%M %p'
while sleep 1
do
tput cuu 2
date +'%a %b %e %Y%n%I:%M %p'
done