如果我想清除屏幕并在程序输出超过屏幕上的行数时运行较少,我可以执行以下操作:
mypgm | tee mypgm.out
LEN=$(wc -l mypgm.out | cut -f1 -d' ')
[[ $LEN >= $LINES ]]; then
clear
less -R mypgm.out
fi
只要输出中的所有行都没有环绕,它在视觉上占据屏幕上的多条线就可以正常工作。 是否有一种简单的方法可以确定输出在视觉上占用多少行,或者我是否必须循环输出文件,计算"行数"需要使用$ COLUMNS
显示长行答案 0 :(得分:3)
好像你正在寻找类似的东西:
mycmd | less -F
来自man less
:
-F
或--quit-if-one-screen
如果整个文件可以显示在第一个屏幕上,则会导致自动退出。
您可以将其设为默认行为:
export LESS='-F'
在.bashrc
。
-F
选项很好地与-X
结合使用,会在列出之前跳过屏幕清除(也可以将其作为LESS='-FX'
的默认设置)。
答案 1 :(得分:0)
我找到了折叠,解决了这个问题:
fold -w "$COLUMNS" mypgm.out | wc -l
(因为wc正在对管道运行,所以不需要'cut')