命令如何决定何时调用寻呼机?

命令如何决定何时调用寻呼机?

一些产生大量输出的 shell 命令(例如 )git diff,似乎在输出太长时巧妙地抛出寻呼机,但如果输出恰好很小,则不会这样做。

这是如何运作的?每个单独的程序是否都有自己的代码来测量其输出并调用寻呼机?当它意识到输出太长时,它不是已经将一些内容打印到标准输出而无法将其返回吗?或者这是一个通用的 shell 功能,任何程序都可以利用它,即使没有明确编程来这样做?

需要明确的是:当然foo | less会强制使用寻呼机,也foo | cat不会强制不使用寻呼机。我想知道是否有一种方法可以使任意foo行为成为foo | pager_if_needed.我也不是指字面意义上的实现pager_if_needed(可能可以在 2-3 行 bash 中完成)和执行alias foo="foo | pager_if_needed"- 因为这并不适用于barbaz和其他所有内容。

答案1

shell 如何决定何时调用寻呼机?

事实并非如此。

每个单独的程序是否都有自己的代码来测量其输出并调用寻呼机?

是的。

当它意识到输出太长时,它不是已经将一些内容打印到标准输出而无法将其返回吗?

简单:只开始打印你的输出你检查一下是否太长了。

相关内容