Linux 命令(88)—— more 命令

  • 2019 年 11 月 12 日
  • 筆記

1.命令简介

more 命令是常用的文本文件阅读工具,类似于 cat,不过以一页一页的形式显示,更方便使用者逐页阅读。一般文件过大时使用 more 浏览,文件较小时使用 cat。

more 命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%),可以使用交互式命令进行交互。最常用交互式的指令有: (1)回车键向下滚动一行; (2)空格键(Space)显示下一页; (3)b 键(back)回显上一页; (4)斜杠 / 后跟待搜索的正则表达式进行查找; (5)h 或 ? 键显示帮助信息; (6)q 或 Q 键退出。

注意,more 命令实际使用过程中会有很多不足之处,使用起来着实揪心,建议使用 less 命令。 (1)无法显示行数; (2)搜索时无法高亮匹配的内容; (3)搜索时从屏幕末行的下一行开始搜索,不搜索屏幕内的内容,使用不便; (4)无法向后跳转至匹配项; (5)无法快速跳转至首行与末行等。

2.命令格式

more [OPTIONS] FILE [...]

3.选项说明

-NUM  	指定每屏显示的行数为 NUM  -d  	在屏幕下方给用户显示提示信息"[Press space to continue, 'q' to quit.]"。当用户按下其非法按键时,显示"[Press 'h' for instructions.]",而不是告警声音  -l  	抑制特殊字符换页符(Form Feed)造成的暂停  -f  	计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)  -p  	不以滚动的方式显示每一页,而是先清除屏幕后再显示内容  -c  	与 -p 相似,不同的是先显示内容再清除其他旧的内容  -s  	将多个空行压缩成一行显示  -u  	不显示文本底部的下划线  +/STRING  	从匹配搜索字符串 STRING 所在行的前两行开始显示  +NUM  	从文件第 NUM 行开始显示  --help  	显示帮助信息并退出  -V, --version  	显示版本信息并退出

4.交互式命令

more 的交互式命令基于 Vi,有些命令前面可能有一个十进制数,在下面的描述中称为 k。^X 表示 control-X

h, ?  	显示交互式命令的帮助摘要  SPACE  	显示下一页内容  z  	向下滚动 k 行,k 缺省值是当前的屏幕大小。可在键入命令前输入指定数值取代缺省值  RETURN  	回车键,向下滚动 k,默认为 1 行。可在键入命令前输入指定数值替代缺省值  d, ^D  	向下滚动 k 行,k 缺省值是当前的屏幕大小的一半,可在键入命令前输入指定数值替代缺省值  q, Q, INTERRUPT  	退出 more 命令  s  	显示下一页文本时跳过 k 行文本,缺省值是 1,可在键入命令前输入指定数值替代缺省值  f  	显示下一页文本时跳过 k 屏文本,缺省值是 1,可在键入命令前输入指定数值替代缺省值  b, ^B  	向后回显第 k 屏文本,缺省值是 1,可在键入命令前输入指定数值替代缺省值  '  	单引号,跳到上一次搜索开始的地方  =  	显示当前行号  /PATTERN  	从当前屏幕最后一行的下一行开始搜索符合正则表达式的第 k 个文本。k 默认为 1,可在键入命令前输入指定数值替代缺省值  n  	跳转到下 k 个匹配的文本,k 默认为 1,可在键入命令前输入指定数值替代缺省值  !command, :!command  	在子 Shell 中执行命令 command  v  	启动环境变量 VISUAL 定义的文本编译器,如果 VISUAL 未定义则使用 EDITOR,如果 EDITOR 未定义,则使用默认的 /usr/bin/vi,指向当前行  ^L  	刷新屏幕  :n  	跳到后面第 k 个文件,缺省值是 1。可在键入命令前输入指定数值替代缺省值  :p  	跳到前面第 k 个文件,缺省值是 1。可在键入命令前输入指定数值替代缺省值  :f  	显示当前文件名和行号  .  	重复上次命令

5.环境变量

more 命令使用的相关环境变量有:

MORE  	设置 more 的选项  SHELL  	用户使用的 Shell,Linux 系统一般为 /bin/bash  TERM  	指定终端类型, more 用它来获取操作屏幕所需的终端特性  VISUAL  	用户首选的编辑器,在用户键入 v 命令时使用  EDITOR  	如果 VISUAL,则使用 EDITOR

6.常用示例

(1)查看文件内容, 按下回车逐行向下浏览。

more /etc/passwd

(2)指定每屏显示行数,使用选项 -NUM,这里指定显示 5 行。

more -5 /etc/passwd    root:x:0:0:root:/root:/bin/bash  bin:x:1:1:bin:/bin:/sbin/nologin  daemon:x:2:2:daemon:/sbin:/sbin/nologin  adm:x:3:4:adm:/var/adm:/sbin/nologin  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

(3)从文件第 NUM 行开始显示,使用选项 +NUM,这里从第 3 行开始显示。

more -5 +3 /etc/passwd    daemon:x:2:2:daemon:/sbin:/sbin/nologin  adm:x:3:4:adm:/var/adm:/sbin/nologin  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  sync:x:5:0:sync:/sbin:/bin/sync  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

(4)从匹配搜索字符串 STRING 的文件位置开始显示。比如从 /etc/passwd 中搜索 adm 所在行的前两行开始显示。

more -5 +/adm /etc/passwd    ...skipping  bin:x:1:1:bin:/bin:/sbin/nologin  daemon:x:2:2:daemon:/sbin:/sbin/nologin  adm:x:3:4:adm:/var/adm:/sbin/nologin  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  sync:x:5:0:sync:/sbin:/bin/sync

(5)与管道组合使用。一个命令输出内容之后,如果内容过多,可以用 more 来分页显示,需要和管道 | 结合起来。

ps -ef | more -5    UID        PID  PPID  C STIME TTY          TIME CMD  root         1     0  0  2018 ?        01:56:14 /usr/lib/systemd/systemd --system --deserialize 19  root         2     0  0  2018 ?        00:00:20 [kthreadd]  root         3     2  0  2018 ?        00:00:30 [ksoftirqd/0]  root         5     2  0  2018 ?        00:00:00 [kworker/0:0H]