1. 写在前面

本文主要介绍 Linux head 命令:可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

关注 公众号 获取最新博文: 滑翔的纸飞机

2. head 命令

head 命令的基本语法是:

head [OPTION]... [FILE]...

示例准备两个文件:state.txt 和 capital.txt,包含国家和城市名称。文件可参考上篇博文,本文在 Ubuntu 系统下验证,上篇博文在 Mac 系统验证,部分参数存在差异,具体可 man head/tail 查看;

默认,不带任何选项,只显示指定文件的前 10 行。

例如:

root@dev:~/linux/head# head state.txt
---------------------------------------------------
China
Mongolia
North Korea
South Korea
Japan
Philippines
Vietnam
Laos
Cambodia
Myanmar

参数:

参数 描述
-n 显示的行数
-c 显示的字节数
-q 隐藏文件名
-v 显示文件名

2.1 示例

(1)-n num 显示文件前 num 行内容

必须在命令中指定 "num",否则会显示错误。

root@dev:~/linux/head# head -n 5 state.txt
---------------------------------------------------
China
Mongolia
North Korea
South Korea
Japan

(2)-c num 显示指定字节数

打印指定文件前 "num"字节。换行符算作一个字符,因此如果 head 打印出一个换行符,它将算作一个字节。

root@dev:~/linux/head# head -c 6 state.txt
---------------------------------------------------
China

(3)-q 不输出文件名

如果给出的文件超过 1 个,则使用该命令。使用该命令时,每个文件中的数据前面都没有文件名。

不使用 -q 选项:输出文件名;

root@dev:~/linux/head# head state.txt capital.txt
---------------------------------------------------
==> state.txt <==
China
Mongolia
North Korea
South Korea
Japan
Philippines
Vietnam
Laos
Cambodia
Myanmar

==> capital.txt <==
Beijing
Shanghai
Guangzhou
Shenzhen
Tianjin
Hong Kong
Nanking
Macau
Tibet
Sian

使用 -q 选项:不输出文件名;

root@dev:~/linux/head# head -q  state.txt capital.txt
---------------------------------------------------
China
Mongolia
North Korea
South Korea
Japan
Philippines
Vietnam
Laos
Cambodia
Myanmar
Beijing
Shanghai
Guangzhou
Shenzhen
Tianjin
Hong Kong
Nanking
Macau
Tibet
Sian

(4)-v 以文件名开头

使用该选项后,指定文件中的数据总是以文件名开头。

root@dev:~/linux/head# head -v state.txt
---------------------------------------------------
==> state.txt <==
China
Mongolia
North Korea
South Korea
Japan
Philippines
Vietnam
Laos
Cambodia
Myanmar

(5)打印 M 行和 N 行之间的行(M>N)

为此,我们使用 headtail 和 pipeline(|) 命令。命令为:head -M file_name | tail +N,因为 head 命令会先打印 M 行,然后从 M 行开始,tail 命令会从 +N 开始剪切行,直到最后一行;

我们也可以使用 head -M file_name | tail +(M-N+1) 命令,因为 head 命令会先打印 M 行,然后从 M 行开始,tail 命令会从最后一行剪切 (M-N+1) 行。例如,我们要打印 state.txt 文件中 10 到 20 行之间的内容。

root@dev:~/linux/head# head -n 20 state.txt | tail -10
---------------------------------------------------
Thailand
Malaysia
Brunei Darussalam
Singapore
Indonesia
East Timor
Nepal
Bhutan
Bengal
India

(6)pipeline(|) 使用 head

head 命令可以与其他命令进行管道连接。在下面的示例中,ls 命令的输出被管道输送到 head,以只显示最近修改的三个文件或文件夹。

显示所有最近修改或最近使用的文件:

root@dev:~/linux/head# ls -t
---------------------------------------------------
d.txt  c.txt  b.txt  a.txt  capital.txt  state.txt

输出最近使用的三个文件:

root@dev:~/linux/head# ls -t | head -n 3
---------------------------------------------------
d.txt
c.txt
b.txt

还可以与一个或多个过滤器进行管道连接,以进行额外处理。例如,排序过滤器可用于按字母顺序对最近使用的三个文件或文件夹进行排序。

root@dev:~/linux/head# ls -t | head -n 3 | sort
---------------------------------------------------
b.txt
c.txt
d.txt

感谢您花时间阅读文章!

关注公众号不迷路!