linux极简小知识:44、查看文本文件内容的正确姿势(下)—— more和less命令的用法和区别!

1,173 阅读3分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

本篇是 linux极简小知识 系列的第44篇,介绍真实有用的linux知识,欢迎阅读查看!


moreless 的简要介绍:

  • more 字面意思就是“显示更多”,用于分屏查看文件内容,对于内容太多的文件,可以一屏一屏(一页一页)的显示内容;使用空格(space)前进到下一页;按 b 键就会往回一页显示。more命令启动时就加载整个文件,从前往后读取内容。

  • less 表示 less is more 的含义,是对more命令的增强。more命令查看内容时只能简单的前进后退(仅能使用滚轮后退查看、使用 b 键回退一页),less在more的基础上,增加了上下方向键显示当前屏的上下内容。

Linux里流传着这样一句话:"less is more".

more 分页查看内容命令

more 除了按页查看文件的内容,还支持直接跳转行、搜索等功能。

命令参数

  • +n 从第n行开始显示

  • -n 定义屏幕大小为n行

  • +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示

  • -c 从顶部清屏,然后显示

  • -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能

  • -l 忽略Ctrl+l(换页)字符

  • -p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

  • -s 把连续的多个空行显示为一行

  • -u 把文件内容中的下画线去掉

常用操作命令或按键

  • Enter 向下n行,需要定义。默认为1行

  • Ctrl + f 向下滚动一屏

  • 空格键 向下滚动一屏

  • Ctrl + b 返回上一屏

  • = 输出当前行的行号

  • : + f 输出文件名和当前行的行号

  • v 调用vi编辑器(小写的字母 v 键)

  • !命令 调用Shell,并执行“命令”。

  • q 退出more

more 命令使用

  • 查看 my.txt 第一屏内容。
$ more my.txt
line-1
line-2
line-3
......省略
lillne-21
line-22
line-23
--More--(5%)
  • 显示从第 6 行开始的内容
$ more +6 my.txt
line-6
line-7
line-8
line-9
......
  • 设置每页显示 5 行
$ more -5 my.txt
line-1
line-2
line-3
line-4
line-5
--More--(1%)
  • 从文件中查找第一个出现"10"字符串的行,并从该处前两行开始显示输出。
$ more +/10 my.txt

...skipping
line-8
line-9
line-10
line-11
line-12
line-13
......
  • more接受管道输入显示内容
$ cat my.txt | more -5
line-1
line-2
line-3
line-4
line-5
--More--

less 指令

less 同样用于分页显示文件内容。但less的用法比more更强大更灵活更有弹性。

less 可以使用上下方向键( [pageup] [pagedown])往前往后翻看文件,还可以实现向下搜和向上搜的搜索。

less查看时不会加载整个文件。

选项参数或命令

选项说明

-b <缓冲区大小> 设置缓冲区的大小

-e 当文件显示结束后,自动离开

-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件

-g 只标志最后搜索的关键词

-i 忽略搜索时的大小写

-m 显示类似more命令的百分比

-N 显示每行的行号

-o <文件名> 将less 输出的内容在指定文件中保存起来

-Q 不使用警告音

-s 显示连续空行为一行

-S 行过长时间将超出部分舍弃

-x <数字> 将“tab”键显示为规定的数字空格

查看过程中的操作指令

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

b 向后翻一页

d 向后翻半页

h 显示帮助界面

Q 退出less 命令

u 向前滚动半页

y 向前滚动一行

空格键 滚动一行

回车键 滚动一页

[pagedown]: 向下翻动一页

[pageup]: 向上翻动一页

v 调用vi编辑器(小写的字母 v 键)

&pattern - 仅显示匹配模式的行,而不是整个文件

less 打开文件后,输入 & 后变为 &/,然后输入要匹配的内容,回车就会显示所有匹配的行

&/10 回车后显示如下:

line-10
line-100
line-101
line-102
line-103
line-104
line-105
line-106
line-107
line-108
line-109
line-110
line-210
line-310
~
~
~
~
~
~
~
~
~
& (END)

其他操作命令和按键

  1. 全屏导航

ctrl + f - 向前移动一屏

ctrl + b - 向后移动一屏

ctrl + d - 向前移动半屏

ctrl + u - 向后移动半屏

  1. 单行导航

j - 向前移动一行

k - 向后移动一行

  1. 其它导航

G - 移动到最后一行

g - 移动到第一行

q / ZZ - 退出 less 命令

查找

more, less 都具备查找功能,按/ 然后输入要找的字串,再按 Enter 即可,按 n(next) 会继续找,大写的 N 则是往回(上)找,按 q(quit)或者ZZ离开。

less 使用示例

  • ps查看进程信息并通过less分页显示同时显示行号
$ ps -ef|less -N
      1 UID        PID  PPID  C STIME TTY          TIME CMD
      2 root         1     0  0 Oct07 ?        00:02:55 /usr/lib/systemd/systemd      2  --switched-root --system --deserialize 22
      3 root         2     0  0 Oct07 ?        00:00:00 [kthreadd]
      ......省略
     16 root        18     2  0 Oct07 ?        00:00:00 [bioset]
     17 root        19     2  0 Oct07 ?        00:00:00 [bioset]
     18 root        20     2  0 Oct07 ?        00:00:00 [bioset]
:
  • 浏览多个文件
$ less my.txt my1.txt
line-1
line-2
line-3
......省略
lillne-21
line-22
line-23
my.txt (file 1 of 2)

此时:

输入 :n 后,切换到下一个文件 my1.txt。

输入 :p 后,切换到上一个文件 my.txt。

  • 当正在浏览一个文件时,也可以使用 :e 命令 打开另一个文件。
$ less my.txt
......
line-22
line-23
:e

输入 :e 后,变为 Examine:

line-22
line-23
Examine: my1.txt

回车就可以查看 my1.txt。

more 和 less的区别小总结

总结下more 和 less的区别:

  1. less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示。
  2. less不必读整个文件,加载速度会比more更快。
  3. less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容

参考

主要参考自Linux中more和less命令用法及其他资料,结合实际测试和使用。