使用“more”进行分页标准输出,并通过管道传输到系统日志

使用“more”进行分页标准输出,并通过管道传输到系统日志

我已经实现了一个包装脚本,它会导致通过该包装脚本执行的所有命令记录(通过 rsyslog)诸如执行时间、运行命令的用户和退出代码等内容。

我正在尝试实现分页,但在使用“more”命令时遇到了问题。问题的根源在于“more”在通过管道传输到另一个程序时似乎会退出,例如

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

这将打印 4 行,但是,如果我们在末尾修剪 '| cat',那么它将在打印 3 行后暂停,正如预期的那样。

不可否认,使用“less”代替“more”确实有效,尽管这并没有达到预期的效果,因为它打开了一个单独的“窗口”,并且在完成后不允许向后滚动(我不需要像“less”允许的那样向后滚动的能力)。

我当前的解决方案是使用“head”和“tail”命令来获得我想要的效果,但也面临着一些其他挑战。

有谁知道让“more”按照我设想的方式工作的秘诀吗?也欢迎提出其他更简单的分页工具(支持 Enter、空格和“q”操作)的建议。

谢谢你!

答案1

似乎使用tee重定向到文件和分页标准输出比在管道中间分页更合适:

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

相关内容