![如何在终端中显示文件的第一页?](https://linux22.com/image/156720/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E7%9A%84%E7%AC%AC%E4%B8%80%E9%A1%B5%EF%BC%9F.png)
我想尽可能多地显示仍然适合终端窗口的文件,即像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
它将显示从文本文件的第一行开始的所有可用的适合行