tput последовательность, которая не приводит к очевидным изменениям?

Мне часто приходится подключаться к удаленной системе через ssh, которая, если столкнется с N минутами бездействия (где N довольно мало), прервет мое соединение. Я устал от того, что меня выгнали и я потерял свою работу / контекст только потому, что, например, я пошел искать что-то в Интернете, и это заняло немного времени.

Я пытался придумать простой сценарий, который я могу запустить в фоновом режиме, который просто время от времени отправляет небольшое количество вывода на терминал, поэтому я не выйду из системы.

Конечно, в идеале, я бы хотел, чтобы результаты не мешали тому, что я делаю, независимо от того, что я делаю - простой текст, ругательства, что угодно.

Так что я ищу некоторые возможности tput, которые будут сбрасывать таймер ввода / вывода, но приводят к непостоянству в отношении внешнего вида экрана. Я обнаружил, что многие вещи близки, но пока что все они могут привести к сбоям, если время выбрано неправильно.

Что я сейчас делаю

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 для параметров может работать, если мой терминал поддерживает mrcup, но это не так.

Вещи как

echo -e '\c'

а также

cat /dev/null

ничего не приведет к выходу на терминал, и поэтому не сбрасывайте таймер неактивности.

Кажется, должен быть какой-то простой способ.

Есть идеи?

1 ответ

Я думаю, что у меня есть это:

echo -e '\000\c'
Другие вопросы по тегам