使用bash在终端中显示运行时钟而不使用循环

时间:2017-07-13 09:14:09

标签: linux bash

如何在不使用任何for或while循环的情况下在linux终端中显示正在运行的时钟。在脚本中使用这些循环,持续时间为1秒,会导致系统负载过重。

4 个答案:

答案 0 :(得分:2)

怎么样:

watch -n 1 date

使用watch定期运行命令。

答案 1 :(得分:2)

您可以创建一个使用sleep

调用自身的函数
#!/bin/bash

function showdate(){
   printf '\033[;H' # Move the cursor to the top of the screen
   date             # Print the date (change with the format you need for the clock)
   sleep 1          # Sleep (pause) for 1 second
   showdate         # Call itself
}

clear               # Clear the screen
showdate            # Call the function which will display the clock

如果您执行此脚本,它将无限期运行,直到您点击CTRL-C

答案 2 :(得分:0)

这篇文章很古老,但对于仍在寻找这种东西的人来说:

#!/bin/bash

printf '\033[;H'
while true; do date; sleep 1; done

这个版本在实现目标的同时避免了递归(和堆栈错误!)。

(为了记录 - 我确实更喜欢 watch 版本,但由于 OP 不喜欢该解决方案,我提供了对其他解决方案的改进。)

答案 3 :(得分:0)

如果你想在终端窗口标题中添加日期并且你的终端支持它,你可以这样做

#! /bin/bash

while :
do
    printf '\033]0;%s\007' "$(date)"
    sleep 1
done &

它不会影响任何其他终端输出。