Parece que usar tee
para redirecionar para um arquivo e paginar stdout seria mais apropriado do que a paginação no meio de um pipeline:
printf "%s\n" this is a test | tee /tmp/some.file | more -3
Eu implementei um script wrapper que faz com que todos os comandos executados através deste 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 'more'. A raiz do meu problema é que "mais" parece sair quando é canalizado para outro programa, por exemplo,
echo -e "this\nis\na\ntest" | more -3 | cat
Isto imprimirá 4 linhas, embora se cortarmos o '| cat 'no final, então fará uma pausa após imprimir 3 linhas, como esperado.
Evidentemente, usar 'menos' em vez de 'mais' funciona, embora isso não tenha o efeito desejado, pois abre uma "janela" separada e não permite a rolagem de volta depois de concluída. precisa ter a capacidade de rolar para trás da mesma forma que "menos" também permite).
Minha solução atual é usar os comandos "head" e "tail" para obter o efeito que quero, mas há outros desafios para enfrentar também.
Alguém sabe o segredo para fazer 'mais' funcionar da maneira que eu imaginei? Sugestões para outra ferramenta de paginação que seja mais simples (suporta Enter, espaço e ações 'q') também são bem-vindas.
Obrigado!
Parece que usar tee
para redirecionar para um arquivo e paginar stdout seria mais apropriado do que a paginação no meio de um pipeline:
printf "%s\n" this is a test | tee /tmp/some.file | more -3