爱技术 & 爱分享
爱蛋蛋 & 爱生活

more命令

如果你已经习惯了在Linux系统上工作,那你一定会发现在Linux世界中存在着大量的文本文件。

配置文件和日志文件通常都采用文本格式。这些文件通常都有很长的内容,不能在一屏内全部显示。所以在处理这种文件时,我们需要分页显示。这时我们可以用上more命令。

more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读。它默认是内置在各个Linux发行版中的。

不过more命令是比较原始的,less命令是他的增强版和扩展版。

命令格式

more [options] file [...]

选项

不过这里有一点值得注意的是,选项也取自环境变量MORE的值,不过命令行选项可以覆盖它。

所以如果有时候more命令没有按你预期的去执行,别慌,检查一下环境变量MORE的值,看看是不是他在捣乱。

选项 解释
-number 此选项指定一个整数,代表屏幕大小(以行为单位)。
-d more命令执行时会提示用户 “[Press space to continue, ‘q’ to quit.]”(默认不提示的) ,并且当你按错键的时候会显示 “[Press ‘h’ for instructions.]” 而不是通过警告铃音提示。
-l more命令执行时通常将^L(换页符)视为一个特殊的符号,并且在遇到任何包含有换页符时暂停。-l选项会阻止此操作。
-f 使用逻辑计数,而不是依赖于屏幕线(即,长行不折叠)。
-p 不使用滚屏,而是清除整个屏幕之后重新打印(默认是滚屏)。 不过有一点需要注意的是,如果可执行文件被命名为page的时候,本选项会自动打开。
-c 不使用滚屏,而是从顶部画开始重新打印,清除显示每行的其余部分,也就是会覆盖当前屏幕的所有数据,即使往上滚轮也看不到了。
-s 将多个空行压缩成一个。
-u 抑制下划线。
+/ + /选项指定在显示每个文件之前将搜索的字符串。
+number 从第number行开始显示

命令

more命令是可交互的,所以允许在执行more命令时输入指定命令进行操作。交互式命令更多的基于vi(1)。

一些命令之前可能会有一个十进制数字,在下面的描述中被称为k。 在下面的描述中,^ X表示control-X。

所以,注意:

K代表的数字,出现在命令之前,所以想手动指定K的值得话,需要在命令之前输入K的值

命令 解释
h or ? 显示以下命令的帮助信息摘要,如果你忘记了所有其他的命令,请记住这一个。
SPACE 显示接下来的k行文本。 默认为当前屏幕大小。
z 显示接下来的k行文本。 默认为当前屏幕大小。
RETURN 显示接下来的k行文本。 默认为1行。
d or ^D 滚动K行,默认为当前滚动大小,初始化为11
q or Q or INTERRUPT 退出
s 向下跳过K行文本(逻辑文本),默认为1
f 向下跳过K行文本(屏幕文本),默认为1
b or ^B 向上跳过K行文本(屏幕文本),默认为1,只对文件生效,对于管道无效
´ 去上一个搜索开始的地方。
= 显示当前行号
/pattern 搜索第k个正则表达式的出现。 默认为1。
n 搜索上次正则表达式的第k次出现。 默认为1。
!command or :!command 在子shell中执行命令
v 在当前行启动编辑器。 如果定义了编辑器,则从环境变量VISUAL中取出编辑器;如果VISUAL没有定义,则编辑器取自EDITOR;如果VISUAL和EDITOR都未定义,编辑器将默认为vi。
^L 刷新屏幕,重绘
:n 往后跳K个文件。 默认为1。
😛 往前跳K个文件,默认为1。
:f 显示当前文件名和行号
. 重新执行之前执行过的命令

还有一些要注意的点:

如果它们存在,more使用以下环境变量:

MORE这个变量可以设置为更喜欢的选项。

SHELL正在使用的当前shell(通常在登录时由shell设置)。

TERM指定终端类型,用于获取操作屏幕所需的终端特征。

用户喜欢的VISUAL编辑器。 当按键命令v被按下时使用。

编辑器VISUAL没有指定时的编辑器编辑器。

使用实例

显示文件中从第3行起的内容

more +3 log2012.log

[root@localhost test]# cat log2012.log 
2012-01
2012-02
2012-03
2012-04-day1
2012-04-day2
2012-04-day3
======[root@localhost test]# more +3 log2012.log 
2012-03
2012-04-day1
2012-04-day2
2012-04-day3

从文件中查找第一个出现”day3″字符串的行,并从该处前两行开始显示输出

more +/day3 log2012.log

[root@localhost test]# more +/day3 log2012.log 
...skipping
2012-04-day1
2012-04-day2
2012-04-day3
2012-05
2012-05-day1

设定每屏显示行数

more -5 log2012.log

[root@localhost test]# more -5 log2012.log 
2012-01
2012-02
2012-03
2012-04-day1
2012-04-day2

列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来

ls -l | more -5

[root@localhost test]#  ls -l  | more -5
总计 36
-rw-r--r-- 1 root root  308 11-01 16:49 log2012.log
-rw-r--r-- 1 root root   33 10-28 16:54 log2013.log
-rw-r--r-- 1 root root  127 10-28 16:51 log2014.log
lrwxrwxrwx 1 root root    7 10-28 15:18 log_link.log -> log.log
-rw-r--r-- 1 root root   25 10-28 17:02 log.log
-rw-r--r-- 1 root root   37 10-28 17:07 log.txt
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxrwxrwx 2 root root 4096 10-28 14:47 test4

参考链接:

https://linux.cn/article-2647-1.html

http://man.linuxde.net/more

http://www.runoob.com/linux/linux-comm-more.html

http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html

赞(0) 传送门
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。墨影 » more命令