Paginación estándar usando 'más' y canalización a syslog

Paginación estándar usando 'más' y canalización a syslog

Implementé un script contenedor que hace que todos los comandos ejecutados a través de este script contenedor registren (a través de rsyslog) cosas como el tiempo de ejecución, el usuario que ejecutó el comando y el código de salida.

Estoy intentando implementar la paginación y encontré un problema con el comando 'más'. La raíz de mi problema es que "más" parece cerrarse cuando se canaliza a otro programa, por ejemplo

echo -e "this\nis\na\ntest" | more -3 | cat

Esto imprimirá 4 líneas, aunque si recortamos el '| cat' al final, luego se detendrá después de imprimir 3 líneas, como se esperaba.

Es cierto que usar 'menos' en lugar de 'más' funciona, aunque esto no tiene el efecto deseado ya que abre una "ventana" separada y no permite desplazarse hacia atrás una vez que se completa (no necesito la habilidad para desplazarse hacia atrás en la forma que 'menos' permite).

Mi solución actual es usar los comandos 'head' y 'tail' para obtener el efecto que quiero, pero también hay otros desafíos que enfrentar.

¿Alguien conoce el secreto para hacer que "más" funcione de la forma que yo imaginé? También se aceptan sugerencias sobre otra herramienta de paginación que sea más sencilla (admite acciones Enter, espacio y 'q').

¡Gracias!

Respuesta1

Parece que usar teepara redirigir a un archivo y paginar la salida estándar sería más apropiado que paginar en medio de una canalización:

printf "%s\n" this is a test | tee /tmp/some.file | more -3

información relacionada