0%

more - 多多益善

more - 多多益善

.. _linux_more_beginner:

.. note::
欲穷千里目,更上一层楼。
唐 王之焕《登鹳雀楼》

more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。

在查阅文件的时候,我们说过可以用cat命令,不过这个是入门级别的,但凡用了几天Linux的,基本不太会再使用cat,而是另外两个指令,more或者less。这次说一下more,more是在文件的内容一个屏幕装不小的时候使用的。而less是more的升级版本,稍后会介绍。

在命令行里看文件,cat 是一口气倒完;文件比屏幕长时,人眼跟不上滚动,就要分页。more 干的就是这件事:一屏一屏往后翻,空格下一页,q 退出。

如今很多人更爱 :ref:linux_less_beginner(能前后翻、搜索更舒服),但 more 仍随处可见——管道末端、老脚本、急救手册里都可能写着它。先会 more,再去体会 less 为何被称为升级版,路径更自然。

more 的官方定义为:

more - file perusal filter for crt viewing

看不懂,什么是CRT,莫慌,关于more的解释主要针对在上古年代的计算机,你不理解crt也没有关系,毕竟现在已经是Retina的年代了。

命令格式

1
$ more [选项] [文件...]

常见选项:

  • +n:从第 n 行开始显示
  • -n:每屏大约显示 n 行
  • +/pattern:先定位到匹配 pattern 的位置再显示
  • -s:把连续空行压缩成一行
  • -d:给出“按空格继续、按 q 退出”一类提示

这里以 /etc/services 为例(你机器上若路径不同,换成任意长文本即可)。

基本分页阅读

1
$ more /etc/services

进入后:

  • 空格:下一屏
  • Enter:下一行
  • q:退出
  • /字串 再回车:向下搜索(具体键位因实现略有差异)

从第 n 行开始显示

跳过文件头注释,从第 10 行附近看起:

1
$ more +10 /etc/services

前面的行不会先刷一遍,适合已知“前面都是废话”的场景。

限制每屏行数

终端很高时,仍可强制每次只露大约 10 行,逼自己慢慢读:

1
$ more -10 /etc/services

先搜索再显示

+/pattern 在展示前定位到字串附近,例如找 number

1
$ more +/number /etc/services

显示起点通常在匹配行稍前一点,方便看上下文。

和 cat、less 怎么分工

场景 更合适
短文件、整份贴出来 cat
只往后翻、环境里只有 more more
要上下翻、反复搜 less

管道里也能用,例如:

1
$ dmesg | more

习惯养成后,你会自然换成 less;但看见 more,至少知道该按空格,而不是对着刷屏干瞪眼。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!