Restaurar la sesión después de ejecutar un script de shell

Restaurar la sesión después de ejecutar un script de shell

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 cupopciones de terminfo. Esto se puede hacer desde un shell con el tputcomando.

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 terminfodefinición de su terminal lo admita. No todos los terminales tienen la capacidad.

Respuesta2

Usar clearo tput clearestropear 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 clearse 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

información relacionada