linux 使用bash在终端中显示运行时钟,而不使用loop

oiopk7p5  于 2023-08-03  发布在  Linux
关注(0)|答案(4)|浏览(125)

如何在Linux终端中显示运行时钟而不使用任何for或while循环。在持续时间为1秒的脚本中使用这些循环会导致系统中的显著负载。

dwthyt8l

dwthyt8l1#

怎么样:

watch -n 1 date

字符串
使用watch定期运行命令。

eivnm1vs

eivnm1vs2#

你可以创建一个函数,它用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

gt0wga4j

gt0wga4j3#

如果你想把日期加到终端窗口标题上,并且你的终端支持,你可以这样做

#! /bin/bash

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

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

q0qdq0h2

q0qdq0h24#

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

#!/bin/bash

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

字符串
这个版本避免了递归(和堆栈错误!)同时实现目标。
(For记录-我确实更喜欢watch版本,但由于OP不喜欢该解决方案,因此我提供了对其他解决方案的改进。)

相关问题