是否有类似的命令sleep
,但我可以指定给定时间,以便我的命令将在给定时间启动,互动式在我当前打开的终端窗口中?
我知道at
命令,但这不起作用,因为它不能在我当前打开的终端窗口中交互运行。
我需要在 04:00 在终端中启动命令,就像我醒来一样,输入命令,然后按 Enter 键。
我能想到的最接近的解决方案是在睡觉前计算距离 04:00 还剩多少秒,然后使用sleep
命令。但那太丑陋了。必须有更好的方法来做到这一点。
答案1
如果“丑陋”的部分只是计算睡眠时间,您可以使用四个命令编写脚本。我将它们制作成单个命令(使用; \
)以避免任何输入延迟,但您可以改为编写脚本。这只是一次sleep
——不需要循环。
显示睡眠命令:当您想要实际延迟时echo
省略该词。echo
前导$
和>
是 shell 提示符,而不是您键入的内容。
$ Now=$( date '+%s' ); \
> End=$( date -d '0400 tomorrow' '+%s' ); \
> date -d "+ $(( End - Now )) seconds"; \
> echo sleep $(( End - Now ));
Sun 28 Apr 04:00:00 BST 2024
sleep 64036
$