
A partir de um script bash que ocupa todo o terminal, como restauro a sessão anterior?
Alguns programas dos quais sei que funcionam desta forma:
- guarda-florestal
- vim
- homem
- nano
O padrão comum é: o programa usurpa todo o terminal e, ao sair, tudo é restaurado, ou seja, comandos inseridos e saída impressa.
Responder1
Você deve usar as cup
opções terminfo. Isso pode ser feito a partir de um shell com o tput
comando.
por exemplo
tput smcup
clear
echo hello
echo there
read
tput rmcup
Isso limpará a tela, imprimirá duas linhas, aguardará você pressionar RETURN e então restaurará a tela para onde estava antes.
Isso requer a terminfo
definição do seu terminal para suportar isso, é claro. Nem todos os terminais têm essa capacidade.
Responder2
Usar clear
or tput clear
bagunça o histórico da tela original quando usado em um script bash. A tela ainda está lá, mas apenas a tela visível. Toda a história se foi. Levei muito tempo para descobrir que clear
precisava ser substituído por tput cup 0 0
(funciona no meu caso posicionando o cursor no canto superior esquerdo).
tput smcup
tput cup 0 0 # position cursor top left, simulate clear
...script
tput rmcup