在显示之前,Bash测试文件的有效(分页)行
我刚刚创建了一个脚本来显示文件的内容,根据文件中的有效行数(换行后)使用在显示之前,Bash测试文件的有效(分页)行,bash,less-unix,Bash,Less Unix,我刚刚创建了一个脚本来显示文件的内容,根据文件中的有效行数(换行后)使用cat或less。说清楚一点,我手头的东西很管用,我只是好奇有没有人手头有更好的东西 if[$(stat-c'%s'${ERRLOG})-gt 0];然后 回显“${ERRLOG}” 如果[-n“${COLUMNS}”-a“$(grep-o”{0,${COLUMNS}}”“${ERRLOG}”| wc-l)”-gt“${ROWS}”;然后 小于“${ERRLOG}” 其他的 cat“${ERRLOG}” fi fi 虽然我
cat
或less
。说清楚一点,我手头的东西很管用,我只是好奇有没有人手头有更好的东西
if[$(stat-c'%s'${ERRLOG})-gt 0];然后
回显“${ERRLOG}”
如果[-n“${COLUMNS}”-a“$(grep-o”{0,${COLUMNS}}”“${ERRLOG}”| wc-l)”-gt“${ROWS}”;然后
小于“${ERRLOG}”
其他的
cat“${ERRLOG}”
fi
fi
虽然我很自豪使用grep-o
,它将同一源代码行中的多个模式匹配分割为多个行,但我怀疑有更好的方法可以做到这一点,最好是不分析文件内容两次。也许是awk
由于使用了
$ROWS
和$COLUMNS
less
具有内置功能,因此应归功于:
-F
或-如果有一个屏幕
如果整个文件可以显示在第一个屏幕上,则导致
less
自动退出
始终要使用的选项可以在$LESS
环境变量中设置
对于小于等于530的版本,必须另外使用-X
/--no init
选项;见:
如果使用-F
且文件适合一个屏幕,则不要输出终端初始化序列
less
具有内置的功能:
-F
或-如果有一个屏幕
如果整个文件可以显示在第一个屏幕上,则导致
less
自动退出
始终要使用的选项可以在$LESS
环境变量中设置
对于小于等于530的版本,必须另外使用-X
/--no init
选项;见:
如果使用-F
且文件适合一个屏幕,则不要输出终端初始化序列
这对我不起作用。它不打印任何东西就退出了。不管怎样,我还是投了赞成票,因为这可能是大多数人的正确答案。@memtha你有什么版本的
less
?旧版本可能还需要设置-X
/--no init
。小于436(c)1984-2009 Mark Nudelman。。。greenwoodsoftware.com/less。明威msys的那个。与-X
配合使用。谢谢。-X
是可移植的还是我必须测试更少的版本?@memtha它在不到530中被修复;我认为总是使用-X
不会破坏东西。这对我不起作用。它不打印任何东西就退出了。不管怎样,我还是投了赞成票,因为这可能是大多数人的正确答案。@memtha你有什么版本的less
?旧版本可能还需要设置-X
/--no init
。小于436(c)1984-2009 Mark Nudelman。。。greenwoodsoftware.com/less。明威msys的那个。与-X
配合使用。谢谢。-X
是可移植的还是我必须测试更少的版本?@memtha它在不到530中被修复;我认为总是使用-X
不会破坏东西。