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,至少知道该按空格,而不是对着刷屏干瞪眼。