我经常不得不通过 ssh 连接到一个远程系统,如果遇到 N 分钟的不活动(其中 N 相当小),它将终止我的连接。我已经厌倦了被开除并失去我的工作/背景,例如,我去网上查找了一些东西并且花了一点时间。
我一直在尝试想出一个可以在后台运行的简单脚本,它只是不时向终端发送少量输出,所以我不会被注销。
当然,理想情况下,我希望输出不会干扰我正在做的任何事情,无论我在做什么——纯文本、诅咒等等。
所以我正在寻找一些可以重置 I/O 计时器的 tput 功能,但会导致屏幕外观出现问题。我发现了很多接近的东西,但到目前为止,如果时机错误,所有这些都可能导致故障。
我目前正在做的是
echo -e "$(tput sc)$(tput rc)\c"
(保存光标,恢复光标)。到目前为止,这对我很有帮助,但我敢肯定,在某些执行自己的保存/恢复和搞砸的诅咒程序之间发生这种情况只是时间问题。
cub 和/或 cuf(光标向后,光标向前)看起来几乎可以工作。如果他们中的任何一个在给定 0 参数时根本没有移动光标,那正是我正在寻找的。但是,对我来说不幸的是,0 的行为与 1 完全相同(光标向任何方向移动一个位置)。至少,对于我正在使用的终端,它确实如此。
echo -e "$(tput cub1)$(tput cuf1)"
效果很好,除非它发生在光标位于屏幕左边缘时。在这种情况下,cub1 什么都不做,但是 cuf1 会移动光标。
如果我把它们颠倒过来:
echo -e "$(tput cuf1)$(tput cub1)"
那么只有当光标位于屏幕的右边缘时发生这种情况,我才会遇到麻烦,而且我想这种情况可能发生的频率较低。仍然...
如果我能弄清楚如何获取光标的当前位置,我会得到它,然后用它来杯子到它已经在的位置。但似乎没有办法获取光标的当前位置。(或者我只是错过了它?)
如果我的终端支持 mrcup,参数为 0 的 mrcup可能有效,但它不支持。
像
echo -e '\c'
和
cat /dev/null
什么都不会进入终端,所以不要重置不活动计时器。
似乎应该有一些简单的方法。
有任何想法吗?