如果你已经习惯了在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://www.runoob.com/linux/linux-comm-more.html
http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html