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 计算长行需要显示的“行”数
似乎您实际上正在寻找类似的东西:
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')。