环境:
- centos7.6
- ubuntu21.10
这几个命令都有查看linux文本文件内容的功能,但它们的侧重点又不相同。
- cat:将文件内容全部输出到终端,并滚屏到最后;
- more:分屏显示文本内容
- less:也是分屏显示文本内容
- head:显示文件的头部几行
- tail:显示文件的末尾几行
下面看常见用法即可:
1. 显示文本的全部内容
1.1 使用 cat .bashrc
1.2 使用 cat -n .bashrc
如果,我们想显示行号怎么办?加个 -n 集合即可:
1.3 使用 cat -nE .bashrc
如果,我们想清晰的观察行结尾怎么办(防止行结尾有隐藏空格观察不到)?
添加 -E
即可,这将会在行结尾添加$
显示:
1.3 使用 nl .bashrc
nl 命令也可以来显示行号,并且默认不对空行编号,如下:
当然,也可以强制对空行编号,加个 -b a
即可:
另外,cat命令也可以指定不对空行编号,示例:
cat -b .bashrc
2. 分屏显示文本内容
当文件小的时候,我们使用 cat
或nl
命令没问题,但文件多的时候,由于屏幕直接滚动到最后,不利于从上到下阅读,如:
这个时候,我们就使用 more 命令:
2.1 使用 more test.i
分屏显示文件内容
在查看完成后,按 q
键退出即可。
那么,有办法显示行号吗?
并不能 (⊙o⊙)…(⊙o⊙)…
另外,我们需要知道在使用more查看文件时,enter
滚动下一行,空格
滚动下一屏。只需要知道这么多就行了。
2.2 使用 less test.i
分屏显示文件内容
在查看完成后,按 q
键退出。
可以看到,less
的基本用法和more
差不多,但也有几点明显易操作的地方,比如:可以在查看less屏幕时,使用 上下
箭头来回翻动,虽然more也可以,但不如箭头方便。
那么,有办法显示行号吗?
有的,加-N
即可:
那么,有办法在屏幕下方显示百分比吗?
有的,加 -m
即可:
3. 显示文件的头部几行或几个字节
3.1 显示文件前几行
有的时候,文件本身很大,而我们也只想看文件前几行,怎么办?
使用 head test.i
:
默认显示前10行,如果我们想多几行或少几行怎么办?
使用 head -3 test.i
:
如果想显示行号怎么办?
这种需求没见过,一般用 head 也就是看前几行而已,如果想显示行号,那么请换用 less/more/cat/nl。
3.1 显示文件前几个字节
那么,如何显示前几个字节呢?这对于整个文本就一行的内容(json紧凑输出的)很有用:
4. 显示文件的尾部几行或几个字符
4.1 显示文件末尾几行
有的时候,我们想看文件的末尾几行,怎么办?
使用 tail test.i
:
tail
默认也是显示10行,如果想多几行或少几行,使用tail -3 test.i
:
4.2 显示文件末尾几个字节
和 head 类似,如下:
4.3 监视文件变化
如果我们想监视日志文件,可以使用 tail -f demo.log
:
但是,如果文件一开始不存在的话,那么我们用 tail -f demo.log
将会报错,这个时候,我们可以使用 tail -F demo.log
:
5. 将文件内容按行反序显示(tac)
命令 tac
就是 cat
的倒写,简单看下用法:
6. cat的其他用法
6.1 合并多个文件(cat demo.txt demo2.txt > demo3.txt)
我们知道 >
是将标准输出写入到其他文件;>>
是将标准输出追加到其他文件,
那么,我们可以结合cat
进行文件的合并,如下示例:
6.2 非交互式追加内容到文件(cat >> demo.txt <<eol)
一般我们要改写文件内容使用vim
,但如果我们只想在文件末尾追加几行,有没有简单的方法呢?
如下:
6.3 清空文件内容(cat /dev/null > demo.txt)
如果我们想清空文件内容,我们可以使用:echo -n "" > demo.txt
,如:
使用 echo
清空文件的时候,记得添加 -n
参数,否则它会在结尾添加换行符\n
,如:
那么,我们能否通过cat命令实现清空的效果呢?
使用 cat /dev/null >demo.txt
即可: