
Как восстановить предыдущий сеанс из скрипта bash, который занимает весь терминал?
Вот несколько программ, которые, как мне известно, работают таким образом:
- рейнджер
- вим
- мужчина
- нано
Распространенная схема такова: программа захватывает весь терминал, а затем, при выходе, все восстанавливается, т.е. введенные команды и распечатанный вывод.
решение1
Вам следует использовать опции terminfo cup
. Это можно сделать из оболочки с помощью tput
команды.
например
tput smcup
clear
echo hello
echo there
read
tput rmcup
Это очистит экран, напечатает две строки, дождется нажатия кнопки RETURN, а затем восстановит экран в том состоянии, в котором он был раньше.
terminfo
Конечно, это требует определения вашего терминала для поддержки этого. Не все терминалы имеют такую возможность.
решение2
Использование clear
или tput clear
портит историю исходного экрана при использовании в скрипте bash. Экран все еще там, но только видимый экран. Вся история исчезла. Мне потребовались годы, чтобы выяснить, что clear
нужно заменить на tput cup 0 0
(работает в моем случае, если поместить курсор в верхний левый угол).
tput smcup
tput cup 0 0 # position cursor top left, simulate clear
...script
tput rmcup