我们在使用终端查看文件时,可以通过 cat
more
less
tail
head
等命令。本文将讨论这几个命令的异同。
1. cat
用途:1、显示文件的全部内容 2、将多个文件合并到标准输出
用例:
//在显示文件内容的同时,在每一行前面显示行号 --- 和nl命令类似
cat -n filePath
//同时显示两个文件
cat filePath1 filePath2
2. more
用途: 当文件内容过多时,more可以分页显示文件
动作指令:(在more状态下,通过各种指令来浏览文件)
Enter 向下移动一行(默认一行,可自定义)
Ctrl+f 向下滚动一屏
空格键 向下滚动一屏
Ctrl+b 返回上一屏
q 退出more
= 输出当前行的行号
:f 输出文件名和当前行的行号
v 调用vi编辑器;
! 命令 调用Shell,并执行命令
用例:
//从profile的第4行开始显示
more +4 filePath
//每屏显示4行
more -4 filePath
//从profile中的第一个word单词的前两行开始显示
more +/word filePath
3. less
用途: 分页显示文件内容
与more的区别:less
更加灵活的操作,具备更多特性
动作指令:
Enter 向下移动一行
y 向上移动一行
b 向上滚动一屏
空格键 向下滚动一屏
d 向下滚动半屏
u 向上滚动半屏
g 跳到第一行
G 跳到最后一行
q 退出less
w 指定从指定数字的下一行开始显示
p n% 跳到整个文件内容的n%处开始显示
/pattern 搜索pattern并高亮显示
v 调用vi编辑器
! 命令 调用Shell,并执行命令
h less的帮助
参数:
-c 从上到下刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新
-f 强制打开文件,二进制文件显示时,不提示警告
-i 搜索时忽略大小写;除非搜索串中包含大写字母
-I 搜索时忽略大小写,除非搜索串中包含小写字母
-m 显示读取文件的百分比
-M 显法读取文件的百分比、行号及总行数
-N 在每行前输出行号
-p pattern 搜索pattern
-s 把连续多个空白行作为一个空白行显示
-Q 在终端下不响铃
4. tail
用途: 显示文件的末尾行(默认10行)
参数:
-b Number #从 Number 变量表示的 512 字节块位置开始读取指定文件
-c Number #从 Number 变量表示的字节位置开始读取指定文件
-f #如果输入文件是常规文件或如果 File 参数指定 FIFO(先进先出),那么 tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续从输入文件读取和复制额外的单元(当这些单元可用时)
#如果没有指定 File 参数,并且标准输入是管道,则会忽略 -f 标志。tail -f 命令可用于监视另一个进程正在写入的文件的增长
-k Number #从 Number 变量表示的1KB 块位置开始读取指定文件
-m Number #从 Number 变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果
-n Number #从首行或末行位置来读取指定文件,位置由 Number 变量的符号(+ 或 - 或无)表示,并通过行号 Number 进行位移
//如果文件大于 20,480 字节,那么-r标志只显示最后的 20,480 字节。 -r 标志只有 与 -n 标志一起时才有效。否则,就会将其忽略
-r #从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式显示整个文件
tail 命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。 Number 变量指定将多少单元写入标准输出。 Number 变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),则从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件
用例:
//查看文件的后10行
tail -10 filePath 或 tail -n 10 filePath
// -f使tail不停地去读最新的内容(实时监视的效果) 用Ctrl+c来终止
tail -f filePath
5. head
用途: 显示文件的首行(默认10行)
用例:
//查看文件的前5行
head -5 filePath
其他:
sed:
用例:
//查看文件中间一段 可以使用sed命令
sed -n '5,10p' /etc/passwd #查看文件的第5行到第10行
** od:** 读取非纯文字文件
参数:
-t :后面可以接各种『类型 (TYPE)』的输出,例如:
a :利用预设的字符来输出;
c :使用 ASCII 字符来输出
d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ;
f[size] :利用浮点数值(floating)来输出数据,每个数占用 size bytes ;
o[size] :利用八进位(octal)来输出数据,每个整数占用 size bytes ;
x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes。
nl: 输出文件内容的同时显示行号
与 cat -n
的区别:如果某一行没有内容,nl
不会记入行数,即 nl
只会记录有内容的行数;而 cat -n
会记录所有行的行数