Linux文本处理工具--less
less简介
less是Linux上查看文件内容的工具,功能比more更强大,支持page up和page down,more只能往后查看,不能往前走。另外less有搜索功能,可以向前、向后搜索。
截图less的man文档中的一句话,Also, less does not have to read the entire input file before starting, so with large input files it starts up faster than text editors like vi . 也就是说,less启动时不会加载整个文档,所以对于大文件来说,less的启动速度是要比vi更快的。
less命令的用法
less命令是一个交互式的软件,所以less的命令参数选项包含了启动时参数选项和交互式选项,启动参数选项控制软件的运行前行为,交互式参数选项控制启动之后的行为。
less命令格式
less命令基本命令格式为
less [options] filename1,filename2...
less命令参数选项
- 启动时参数选项
- -b <缓冲区大小> 指定缓冲区的大小
- -e 当文件显示结束后,自动离开
- -f 强制打开特殊文件,例如外围设备代号、目录和二进制文件
- -g 只标志最后搜索的关键词
- -i 忽略搜索时的大小写
- -m 显示类似more命令的百分比
- -N 显示每行的行号
- -o <文件名> 将less 输出的内容在指定文件中保存起来
- -Q 不使用警告音
- -s 显示连续空行为一行
- -S 行过长时间将超出部分舍弃
- -x <数字> 将“tab”键显示为规定的数字空格
- 交互式参数选项
命令内查看帮助
- h 显示帮助界面
- Q 退出less 命令
搜索功能
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索,如果是/的话,就是继续向下搜索,如果是?的话,就向上搜索
- N:反向重复前一个搜索,如果是/的话,就是继续向上搜索,如果是?的话,就向下搜索
- &字符串:仅仅显示匹配上的行
翻页
- b 向上翻一页
- d 向下翻半页
- u 向上滚动半页
- y 向上滚动一行
- 空格键 向下一行
- 回车键 向下一页
- [pagedown]: 向下翻动一页
- [pageup]: 向上翻动一页
- Ctrl + F:向下翻页
- Ctrl + B :向上翻页
- Ctrl + D :向下移动半屏
- Ctrl + U : 向上移动半屏
- G:移动到最后一行
- g:移动到第一行
注:向下:是往下走,往页码大的地方走
多个文件打开及文件间操作
less的下方会显示当前文件和下一个文件的文件名
- 打开多文件的方式
- less file1 file2 file3 ...可以打开多个文件
- :e:已经运行了less命令,想要打开另外一个文件,可以使用:e进行打开,支持tab补全,支持glob通配
vim也有相同的两种方式,已经运行vim的情况下需要使用:open file_name,这没有less好用,1.不支持tab键补全;2.不支持glob通配
- 多文件间切换
- 键入 :n:切换到下一个文件,这个和vim一样(vim使用:bn)
- 键入 :p:切换到上一个文件,这个和vim一样(vim使用:bp)
- 使用less编辑文件
v :在运行的less界面上,使用v选项,会调用系统默认的编辑器(一般来说是vi,但是具体怎么查看就还是个问题???????EDITOR和VISUAL可能有用,但是查询出来没有值,再有是set -o,本机上的set -o中 vi off。)当进入键入v之后,确实和vi的使用方式是一样的,输入i进入INSERT模式,使用q!,qw等命令都可以。- 设置标签
- 设置标签,在less界面键入m,然后页面上会出现mark的字样,输入当个字符(多个字符和数字都不行),页面上的mark字样消失。
- 返回标签处,在less界面键入‘,页面出现"goto mark"的字样,输入刚刚设定的标签,就返回到刚刚的页面处。
这个功能在大文件查看是非常好用!
less命令使用实例
$ps -ef|less
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 May08 ? 00:00:03 /sbin/init
root 2 0 0 May08 ? 00:00:00 [kthreadd]
root 3 2 0 May08 ? 00:00:03 [migration/0]
root 4 2 0 May08 ? 00:00:13 [ksoftirqd/0]
root 5 2 0 May08 ? 00:00:00 [stopper/0]
:
# 这样就可以慢慢查看每个进程的id号了,这其实不是经常用,毕竟要浏览所有进程的需求并不多,主要是为了满足单个屏幕无法容下所有内容,而且需要前后翻页的情况。
实验心得
网络上有人说在交互式命令中使用F选项,可以达到文件尾部,但是实验上来看,可以是可以,不过less会有一个计算该文件的行数的过程,我的实验数据是1221049行,个人笔记本的虚拟机,到文件尾部大概花了10秒左右,看起来还不错。但是tail -f file_name是秒出的。
另外如果使用F进入“Waiting for data..”这个模式后,使用Ctrl + c退出,不会立即退出less,可以继续做其他操作
G:可以直接跳到文件尾部,无论是F还是G对系统的资源占用都没有那么大(实验数据量是308M,但是考虑到机器本身也没那么好,所以less的性能还是相当不错了),同样的机器,我使用vim打开该文件,top下的wa%等值都有一定飙升的现象。
参考
https://www.cnblogs.com/peida/archive/2012/11/05/2754477.html
https://www.cnblogs.com/molao-doing/articles/6541455.html