Padrão de paginação usando 'more' e canalizando para o syslog

0

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!

    
por pleasemorebacon 03.09.2014 / 00:58

1 resposta

1

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
    
por glenn jackman 03.09.2014 / 21:12