automaticamente sai menos após um curto período de tempo

0

Eu uso menos para ver a saída de texto de um comando que tenha informações confidenciais. Menos é bom para isso, pois usa uma tela alternativa e a limpa após o uso. Eu gostaria que menos sessões fossem encerradas depois de um curto período de tempo, digamos 5 minutos.

Existe alguma forma de linha de comando simples para invocar menos com texto canalizado e sair automaticamente depois de 5 minutos?

    
por k-h 05.02.2018 / 12:39

1 resposta

4

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.

    
por 05.02.2018 / 12:46

Tags