如何配置less将非显示数据读入缓冲区?

如何配置less将非显示数据读入缓冲区?

我最近发现您可以启动并立即将长时间运行的源代码搜索传输到后台:

grep -r something | less &

有没有一种方法可以直接less将比当前“在后台”显示的更多输出读入内存,这样当我决定查看搜索结果时,我不需要等待。

答案1

默认情况下,如果通过管道传输命令,bashshell 将使用管道(3)libc 调用来编织子任务的文件描述符。其默认内部缓冲区大小仅为 64K。

不过,有一个工具

buffer

对于该任务,包含在大多数发行版中。默认情况下,它使用 1MB 缓冲区,但您可以将其增加到任意大。例如

grep ..anything, anywhere.. | buffer -m $[1<<30] | less &

可能就足够了。 :-) 它还有许多其他不错的功能(例如,它可以像 a 一样工作dd,或者可以在 n 字节块之后将哈希值打印到 stderr),它是一个...杀手级应用。 :-)

相关内容