在终端中以交互方式在给定时间启动命令

在终端中以交互方式在给定时间启动命令

是否有类似的命令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
$ 

相关内容