Implementei um script wrapper que faz com que todos os comandos executados por meio desse script wrapper registrem (via rsyslog) coisas como o tempo de execução, o usuário que executou o comando e o código de saída.
Estou tentando implementar a paginação e encontrei um problema com o comando 'mais'. A raiz do meu problema é que 'mais' parece encerrar quando é canalizado para outro programa, por exemplo
echo -e "this\nis\na\ntest" | more -3 | cat
Isso imprimirá 4 linhas, mas se cortarmos o '| cat' no final, ele fará uma pausa após imprimir 3 linhas, conforme esperado.
É certo que usar 'menos' em vez de 'mais' funciona, embora não tenha o efeito desejado, pois abre uma "janela" separada e não permite rolar para trás depois de concluído (não preciso da habilidade para rolar para trás da maneira que 'menos' permite).
Minha solução atual é usar os comandos 'head' e 'tail' para obter o efeito desejado, mas também existem outros desafios a serem enfrentados.
Alguém sabe o segredo para fazer 'mais' funcionar da maneira que imaginei? Sugestões para outra ferramenta de paginação que seja mais simples (suporta ações Enter, espaço e 'q') também são bem-vindas.
Obrigado!
Responder1
Parece que usar tee
para redirecionar para um arquivo e paginar stdout seria mais apropriado do que paginar no meio de um pipeline:
printf "%s\n" this is a test | tee /tmp/some.file | more -3