tput序列导致没有明显的变化?

时间:2017-05-18 19:50:30

标签: curses tput

我经常需要ssh到一个远程系统,如果面对N分钟不活动(N很小),将终止我的连接。我已经厌倦了被踢掉并失去工作/背景,仅仅是因为,例如,我在网上看了一些东西,花了一点时间。

我一直试图想出一个简单的脚本,我可以在后台运行,只是偶尔向终端发送少量输出,所以我不会被注销。

当然,理想情况下,我希望输出干扰我正在做的事情,无论我做什么 - 纯文本,诅咒无论如何。

所以我正在寻找一些能够重置I / O计时器的tput功能,但会导致屏幕外观出现noop。我发现了许多接近的事情,但到目前为止,如果时机错误,所有这些都可能导致故障。

我目前正在做的是

echo -e "$(tput sc)$(tput rc)\c"

(保存光标,恢复光标)。到目前为止,这对我很有帮助,但是我确定在一些curses程序执行它自己的保存/恢复并搞砸之前它只是时间问题。

cub和/或cuf(光标向后,光标向前)看起来几乎可以工作。如果他们中的任何一个在给定0参数时没有移动光标,那正是我正在寻找的。但是,不幸的是,对于我来说,0的行为与1完全相同(光标在任何方向上移动一个位置)。至少,对于我使用的终端来说,确实如此。

echo -e "$(tput cub1)$(tput cuf1)"

效果很好,除非光标位于屏幕的左边缘时发生。在这种情况下,cub1什么都不做,但是cuf1会移动光标。

如果我改掉它们:

echo -e "$(tput cuf1)$(tput cub1)"

然后我只会在光标位于屏幕右边缘时发生故障,我想这可能不太经常发生。仍然...

如果我能弄清楚如何获得光标的当前位置,我会得到它,然后用它来杯到它已经存在的位置。但似乎并不是获得光标当前位置的方法。 (或者我只是想念它?)

如果我的终端支持mrcup,参数的0和0可以工作,但它没有。

这样的事情
echo -e '\c'

cat /dev/null

导致什么都没有到终端,所以不要重置不活动计时器。

似乎应该有一些简单的方法。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我想我拥有它:

echo -e '\000\c'