不知不觉地在终端中运行了无限循环

不知不觉地在终端中运行了无限循环

我将以下代码从某个随机源复制到我的终端并运行:

while sleep 1;
  do tput sc;
  tput cup 0 $(($(tput cols)-29));
  date;
  tput rc;
done &

该代码是在终端的右上角显示正在运行的时钟。该片段运行得非常好,并且完全达到了我想要的效果,但现在我只想结束这个循环并摆脱时钟。

另外,我需要理解上面的代码。我有一些想法,因为我知道tput命令的作用,但仍然有很多我无法连接的点。

答案1

您可以jobs在会话中运行命令来列出活动的后台作业,然后通过键入将它们置于前台fg <job number>。然后输入Ctrl+C来停止这个无限循环。

此场景仅适用于运行代码片段的终端。


解释:

tput sc- 保存光标位置。

tput cup 0 $(($(tput cols)-29))- 将光标移动到0Y 轴和(count of screen columns minus 29)X 轴的位置。

date- 只需打印当前日期。

tput rc- 恢复光标位置。

while sleep 1; ... do ... ; done- 循环延迟 1 秒。

键入help while以了解有关whileshell 中循环的更多信息并遵循人 1 tput或者tldp tput 文档了解 tput 是如何工作的。

相关内容