不负时光,遇见每一次成长
大家好,欢迎来到《每天掌握一个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命令,敬请期待!