Supondo que você tenha o GNU coreutils, uma abordagem um tanto simples é substituir less
por timeout --foreground 600 less; printf '3[?47h'; clear; printf '3[?1049l'; stty cooked echo
em comandos tão sensíveis. O comando timeout
mata um processo após uma determinada duração, a opção --foreground
permite que less
use o TTY e stty cooked echo
corrige o terminal depois de matar less
. No caso de matar less
impedir a limpeza e a saída da tela alternativa, os comandos intermediários fazem isso.
As seqüências de escape usadas nos comandos printf
são apropriadas para um terminal (emulador) compatível com DEC, como o Xterm. Seu terminal específico pode usar sequências diferentes para realizar essa tarefa.
Uma função simples:
tless () {
timeout --foreground 600 less "$@"
printf '3[?47h' # Enter alternate screen
clear
printf '3[?1049l' # Exit alternate screen and restore cursor
</dev/tty stty cooked echo # Use in a pipe requires specifying the TTY
}
pode fazer substancialmente menos digitação.
Obrigado @meuh por apontar que a versão original pode não ser limpa ou sair da tela alternativa.
Editado para permitir tless some-file
. Além disso, esta versão foi testada no Linux e no Solaris 11.