我将以下代码从某个随机源复制到我的终端并运行:
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))
- 将光标移动到0
Y 轴和(count of screen columns minus 29)
X 轴的位置。
date
- 只需打印当前日期。
tput rc
- 恢复光标位置。
while sleep 1; ... do ... ; done
- 循环延迟 1 秒。
键入help while
以了解有关while
shell 中循环的更多信息并遵循人 1 tput或者tldp tput 文档了解 tput 是如何工作的。