Bash 通过管道输出到 more

Bash 通过管道输出到 more

我想知道这里的一些 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。这就是为什么我们现在的终端程序中具有上下翻页和搜索功能。

相关内容