如何在交互模式下向标准输出写入更少的缓冲区

如何在交互模式下向标准输出写入更少的缓冲区

我的情况如下:当我问sql计划为\帮助,它将输出传送到较少的。有时,我想在编写下一个查询时保留帮助内容。我想如果我能告诉的话这可能会发生较少的写入标准输出,例如更多的会做,在交互模式下

限制:

我将在看到 \help 的内容后决定是否应该发生这种情况。因此,定制 psql 使用的分页器(我认为)不是一个选项。这意味着我的问题不重复:

https://stackoverflow.com/questions/14474138/customize-pager-in-psql

或者:

如果整个文件可以显示在一个屏幕上,则减少打印到标准输出的数量

我目前正在使用的:

\setenv PAGER more OR \setenv PAGER 'less -X'
\help alter user
q (to exit less or more)
-- Now I can write my query while looking at the alter user syntax above

这种方法缺少的是,我想在查看内容后选择是否需要 -X 选项。我可以想象,通过写入主缓冲区和备用缓冲区可以实现更少的功能。

答案1

您可以提供自己的分页器脚本来保存输出并将其提供给less.然后退出时less可以选择再次显示输出而不带less,或者直接退出。例如,假设输出帮助位于管道中并且less不使用参数调用:

#!/bin/bash
if tee /tmp/save | less -K
then    cat /tmp/save
fi

使-K退出less打开control-c,这会将返回代码从less2 而不是 0 更改为 2。因此,如果您less正常退出cat,则会重复输入,但如果您中断它,您将不会获得额外的输出。

相关内容