我想尽可能多地显示仍然适合终端窗口的文件,即像head
具有动态行数的文件一样。
如果没有换行成多行的行并且提示需要一行,那么我可以使用head -n $(($(tput lines)-1))
.
有没有不需要上述假设的解决方案?
编辑:该解决方案应该是非交互式的,因此less
据我所知,eg 不起作用。
Edit2:该解决方案最好还应该正确处理非打印字符,例如用于文本着色的 ANSI 转义序列。
答案1
你可以包裹着fold
,那么head
它:
onepage () {
fold -w "$(tput cols)" -s "$@" |
head -n "$(($(tput lines)-1))"
}
或者也许使用pr
.假设 GNU pr
:
pr -l "$((LINES - 1))" +1:1 -t
-l ...
- 将页面高度设置为$LINES
- 1。+1:1
从第一页开始打印...直到第一页。-t
- 不打印标题。
答案2
也许使用该程序less
在终端中,输入:
less nameOfTheTextFile
它将显示从文本文件的第一行开始的所有可用的适合行