
Desde un script bash que ocupa la terminal completa, ¿cómo restauro la sesión anterior?
Algunos programas de los que sé que funcionan de esta manera:
- guardabosque
- empuje
- hombre
- nano
El patrón común es: el programa usurpa todo el terminal y luego, al salir, se restaura todo, es decir, los comandos ingresados y la salida impresa.
Respuesta1
Deberías utilizar las cup
opciones de terminfo. Esto se puede hacer desde un shell con el tput
comando.
p.ej
tput smcup
clear
echo hello
echo there
read
tput rmcup
Esto borrará la pantalla, imprimirá dos líneas, esperará a que presione RETORNO y luego restaurará la pantalla a donde estaba antes.
Por supuesto , esto requiere que la terminfo
definición de su terminal lo admita. No todos los terminales tienen la capacidad.
Respuesta2
Usar clear
o tput clear
estropear el historial de la pantalla original cuando se usa en un script bash. La pantalla sigue ahí pero sólo la pantalla visible. Toda la historia se ha ido. Me tomó años descubrir que clear
se debe reemplazar con tput cup 0 0
(funciona en mi caso colocando el cursor en la parte superior izquierda).
tput smcup
tput cup 0 0 # position cursor top left, simulate clear
...script
tput rmcup