每天掌握一个Linux命令(4)|head

不负时光,遇见每一次成长

图片

大家好,欢迎来到《每天掌握一个Linux命令》系列。在这个系列中,我们将逐步学习并熟练掌握Linux命令,今天,我们要学习的命令是 head

前言

在Linux系统中,我们通常使用 cat 命令来查看文本文件的内容。然而,当需要查看大型文件时,使用 cat 命令会使终端输出变得非常庞大,不易于查看。


在这种情况下,我们可以使用 head 命令来快速浏览文件的内容,以确认文件中是否包含我们所需要的信息。使用 head 命令还有一个优点,它不会将整个文件加载到内存中,从而提高了效率。

命令介绍

head 命令用于显示文本文档的开头部分内容。如果未指定特定参数,则默认显示前10行内容

命令格式

使用head命令非常简单,只需在终端输入head并指定要查看的文件名格式如下:

head [选项参数]  文件名

如果想要同时查看多个文件内容,那么可以这样:

head [选项参数]  文件名1 文件名2

命令基本用法

1、显示文件的前10行:

当我们在不使用任何选项参数的情况下,使用 head 命令查看文本文件,默认会显示文件的前 10 行内容,如下所示:

# 查看 test.txt文件前10行内容,如果文件内容不足10行,显示整个文件内容head test.txt

如果文件内容不足10行,将显示整个文件内容。

2、-n:显示文件的前N行:

head命令默认显示文件的前10行。但是,我们可以使用 -n 选项来指定要显示的行数。

# 查看 test.txt 文件前5行内容head -n 5 test.txt head 5 test.txt

其实大多数情况下,head -n 5 test.txt 和 head 5 test.txt 的功能相同,都用于打印文件 test.txt 的前五行。但需要注意的是,不是所有的 head 命令版本都支持 head 5 test.txt 这种用法


为了兼容性,建议使用 head -n N filename 这种形式来输出文件的前 N 行

3、显示多个文件的前N行:

如果需要查看多个文件的前5行,可以使用以下命令。这个命令还可以同时查看多个文件的头部信息

# 同时查看2个文件的前5行(显示文件名来分割不同文件的内容)head -n 5 test1.txt test2.txt

4、显示文件最后N行之外的内容:

如果我们想要打印除了最后5行以外的所有内容,应该使用什么命令呢?在上述例子中,如果行数是负值,比如-5,就会打印除了最后5行以外的所有内容,示例如下:

# 显示文件 test.txt 除了最后5行之外的所有内容head -n -5 test.txt

5、-c:显示文件的前N个字符:

使用 head 命令还可以打印指定字节数的内容,使用 -c 选项来实现,后面跟字节数。​​​​​​​

# 显示 test.txt  文件的前 5 个字符。head -c 5 test.txt

与行数类似,-c 选项后面指定一个负数,可以打印除最后N个字节以外的所有的内容,如下所示:​​​​​​​

# 显示 test.txt 文件中除最后5个字节以外的所有内容head -c -5 test.txt

6、- v:显示文件名和内容:

当我们使用 head 命令查看一个文件的时候,默认输出是不会包含文件的头部信息,只会显示文件的前几行内容。然而,如果我们想要打印文件名的话,可以使用 -v 选项来实现。​​​​​​​

# 显示文件 test.txt 的前5行,并在输出之前显示文件名。head -n 5 -v test.txt

7、-q:不显示文件名,只显示内容:

在之前的示例中,当我们需要查看多个文件时,head 命令默认会显示文件的标题。然而,如果我们不想显示标题,我们可以使用 -q 选项来改变这一默认行为。​​​​​​​

# 去除文件名,显示 test1.txt test2.txt 文件的前5行head -q -n 5 test1.txt test2.txt 

命令其他用法

在很多情况下,head 命令可以和其他命令结合使用,从而提高工作效率。

1、与tail命令结合使用:

工作中,我们经常需要快速定位文件中的特定部分,例如:快速查找文件第n行,或者查看文件第x行到第y行的内容。这时,我们可以使用 head 命令和 tail 命令组合来显示文件的特定行。

如果我们只想打印某一行内容,比如:查看文件的第20行,可以使用以下命令:​​​​​​​

# 打印 test.txt 文件中第20行内容head -n 20 test.txt | tail -n 1

这个命令首先使用 head -n 20 test.txt 获取文件的前20行,然后通过管道将结果传递给 tail -n 1 来从上一步的输出中取出最后一行,即第20行。

那如何获取指定范围的行呢?比如,我们要打印文件中第 20 行到第 30行中的内容,可以使用以下命令:​​​​​​​

# 打印 test.txt 文件中第20行到第30行的内容head -n 30 test.txt | tail -n 11

这个命令首先使用 head -n 30 命令获取文件的前30行,然后通过管道将结果传递给 tail -n 11 命令,以获取最后11行。这样就得到了文件的第20行到第30行的内容。

其实,sed命令也可以用来打印特定的行和获取指定范围的行,而且其用法相对简单。关于sed,我们将在后续文章中进一步讨论

那如果我们需要监视一个正在不断追加内容的文件 test.txt,当新内容追加到文件头部时,实时输出头部内容到标准输出,可以使用以下命令:​​​​​​​

# 实时读取 test.txt 文件前10行内容tail -f test.txt | head -n 10

2、与grep命令结合使用:

我们可以使用 grep 命令来筛选出包含特定文本的行,然后使用 head 命令来限制输出的行数。比如:​​​​​​​

# 在当前目录下的所有文件中搜索包含'Error'的前10行内容grep "Error" * | head -n 10

3、与ls命令结合使用:

如果我们想查看当前目录下文件或文件夹的前几行,可以使用ls和head结合。​​​​​​​

# 列出当前目录下的文件和文件夹,并只显示前5行ls -l | head -n 5

head 命令还具备与其他命令结合使用的功能,具体用法有很多,这里就不再一一详细说明。

总结

  • head 文件名:默认显示文件的前10行内容

  • head -n N 文件名 :显示文件前N行内容

  • head -n N 文件名1 文件名2:分别显示文件名1和文件名2的前N行内容

  • head -n -N 文件名:显示除最后N行以外的所有内容

  • head -c N 文件名:显示文件前N字节的内容

  • head -c -N 文件名 :显示除最后N字节以外的所有内容

  • head -v 文件名:显示文件名(默认的是单个文件不显示,多个文件显示)

  • head -q 文件名:隐藏文件名

  • head -n x test.txt | tail -n 1:打印文件第x行

  • head -n y test.txt | tail -n x:打印文件的第x行到第y行内容,但前提是x <= y

  • tail -f 文件名 | head -n 10:实时读取文件前10行内容

关于 head 命令,这次分享到这里了~

希望这个系列能帮助大家更好地理解和使用Linux命令。如果你有任何问题或建议,请随时告诉我。下期我们将学习另一个有用的Linux命令,敬请期待!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值