仅当输入大于屏幕尺寸时如何减少分页?

Xaq*_*Xaq 1 linux bash terminal less-unix

如果我想在程序的输出超过屏幕上的行数时清除屏幕并减少运行,我可以执行以下操作:

mypgm | tee mypgm.out
LEN=$(wc -l mypgm.out | cut -f1 -d' ')
[[ $LEN >= $LINES ]]; then
   clear
   less -R mypgm.out
fi
Run Code Online (Sandbox Code Playgroud)

只要输出中的任何行都没有环绕,它就可以正常工作,视觉上在屏幕上占据了不止一行。有没有一种简单的方法可以确定输出在视觉上占据了多少行,或者我是否必须循环输出文件,使用 $COLUMNS 计算长行需要显示的“行”数

ran*_*mir 6

似乎您实际上正在寻找类似的东西:

mycmd | less -F
Run Code Online (Sandbox Code Playgroud)

来自man less

-F 或者 --quit-if-one-screen

如果整个文件可以显示在第一个屏幕上,则使 less 自动退出。

您可以通过以下方式使其成为默认行为:

export LESS='-F'
Run Code Online (Sandbox Code Playgroud)

在您的.bashrc.

-F选项与-Xwhich完美结合,将在列出之前跳过屏幕清除(也可以将其作为默认设置LESS='-FX')。