![Bash 通过管道输出到 more](https://linux22.com/image/33140/Bash%20%E9%80%9A%E8%BF%87%E7%AE%A1%E9%81%93%E8%BE%93%E5%87%BA%E5%88%B0%20more.png)
我想知道这里的一些 bash 环境设置:是否可以将 bash 的 stdout 设置为 /bin/more 的管道?您知道,就像使用 vi 作为命令编辑器一样,应该可以避免使用 Ctrl-PgUp 或 Ctrl-PgDown 来查看所有输出(默认情况下)。
更具体地说:我不想要通过管道输出 a单身的命令更像:
$> ls | more
a b c
...
--more--
但是:管道任何我当前会话的输出更多,因此要像往常一样在提示下方获取所有输出 printet - 或者如果太多,则按屏幕显示。
# automatically piped to more:
$> ls
a b c
...
--more--
有没有内置的 bash 来完成这个任务?
编辑:我不够具体,对此感到抱歉:我知道“脚本”和命令分组,例如
(cmdA; cmdB) | less
我真正想要的是自动避免一次获得 100 页输出,而是具有更像 bash'es stdout 的行为。通过添加可以完成
2>&1 | more
对于在命令提示符上输入的所有命令 - 自动执行。
答案1
您的问题对于您想要实现的目标不够具体。我会做一些猜测:
如果您想跟踪会话中发生的任何事情,请使用script
。请参阅man script
获取更多信息。
如果您想将多个命令的输出组合到一个块中,通过管道输送到less
使用大括号,如下所示:
(date; echo; cat /etc/hosts; echo; cat /etc/resolv.conf; echo; host bla.bla) | less
在 shell 中输入内容时同时使用更多内容将不起作用,因为 shell 以及都less
希望从 读取键盘stdin
。这就是为什么我们现在的终端程序中具有上下翻页和搜索功能。