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
ничего не приведет к выходу на терминал, и поэтому не сбрасывайте таймер неактивности.
Кажется, должен быть какой-то простой способ.
Есть идеи?