Linux系统之head命令的基本使用
- 一、head命令介绍
 - 二、head命令的使用帮助
 - 2.1 head命令的help帮助信息
 - 2.2 head命令的语法解释
 
- 三、head的基本使用
 - 3.1 直接使用
 - 3.2 查看文件前N行
 - 3.3 查看多个文件
 - 3.4 查询文件的前5行
 - 3.5 显示文本所有内容(除了后5行内容)
 - 3.6 输出显示文件名
 - 3.7 输出不显示文件名
 - 3.8 显示文件的前10个字节
 
- 四、配合其他命令使用
 - 4.1 配合管道符使用
 - 4.2 配合grep使用
 - 4.3 与xargs配合使用
 
- 五、注意事项
 

一、head命令介绍
- head命令简介
 
head命令在 Linux 和其他类 Unix 操作系统中是一个非常有用的工具,用于查看文本文件的开头部分。默认情况下,它会显示文件的前 10 行。
二、head命令的使用帮助
2.1 head命令的help帮助信息
执行以下命令,查看head命令的帮助信息。
[root@openEuler-test ~]# head --help
Usage: head [OPTION]... [FILE]...
Print the first 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.With no FILE, or when FILE is -, read standard input.Mandatory arguments to long options are mandatory for short options too.-c, --bytes=[-]NUM       print the first NUM bytes of each file;with the leading '-', print all but the lastNUM bytes of each file-n, --lines=[-]NUM       print the first NUM lines instead of the first 10;with the leading '-', print all but the lastNUM lines of each file-q, --quiet, --silent    never print headers giving file names-v, --verbose            always print headers giving file names-z, --zero-terminated    line delimiter is NUL, not newline--help        display this help and exit--version     output version information and exitNUM may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y, R, Q.
Binary prefixes can be used, too: KiB=K, MiB=M, and so on.GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/head>
or available locally via: info '(coreutils) head invocation'
 
2.2 head命令的语法解释
用法: head [选项]... [FILE]...
打印每个 FILE 的前 10 行到标准输出。
如果有多个 FILE,则在每个文件之前会打印一个标题给出文件名。
 
| 选项 | 描述 | 
|---|---|
| -c, --bytes=[-]NUM | 打印每个文件的前 NUM 个字节;如果前面有 -,则打印除去每个文件最后 NUM 个字节的内容 | 
| -n, --lines=[-]NUM | 打印每份文件的前 NUM 行而不是默认的 10 行;如果前面有 -,则打印除去每个文件最后 NUM 行的内容 | 
| -q, --quiet, --silent | 从不打印给出文件名的行 | 
| -v, --verbose | 总是打印给出文件名的行 | 
| -z, --zero-terminated | 行分隔符是 NUL 字符,而不是换行符 | 
| –help | 显示帮助并退出 | 
| –version | 输出版本信息并退出 | 
NUM 可以有乘数后缀:
- b 代表 512
 - kB 代表 1000
 - K 代表 1024
 - MB 代表 1000 * 1000
 - M 代表 1024 * 1024
 - GB 代表 1000 * 1000 * 1000
 - G 代表 1024 * 1024 * 1024
 - 类似地,T、P、E、Z、Y、R 和 Q 也适用
 
二进制前缀也可以使用,例如:KiB=K, MiB=M 等等。
GNU coreutils 在线帮助: https://www.gnu.org/software/coreutils/
 完整文档可访问: https://www.gnu.org/software/coreutils/head
 或者本地查阅: info '(coreutils) head invocation'
三、head的基本使用
3.1 直接使用
直接使用
head命令,默认打印文本的前10行
[root@openEuler-test ~]# head /etc/passwd
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/usr/sbin/nologin
operator:x:11:0:operator:/root:/usr/sbin/nologin
 
3.2 查看文件前N行
使用-n选项,指定查看文件的前n行。
[root@openEuler-test ~]# head -n 2 /etc/passwd
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
 
3.3 查看多个文件
执行以下文件,查看多个文件。
[root@openEuler-test ~]# head -n 3 /etc/passwd  /etc/shadow
==> /etc/passwd <==
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin==> /etc/shadow <==
root:$y$j9T$n53ZO81eNovcbOou130tUkjy$nkyJo1U/tXS59VhjeG3ds9j79nE8xeiFDTg8UBZioi5::0:99999:7:::
bin:*:19866:0:99999:7:::
daemon:*:19866:0:99999:7:::
 
3.4 查询文件的前5行
head -5 /etc/passwd与head -n 5 /etc/passwd效果一致
[root@openEuler-test ~]# head -5 /etc/passwd
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
 

3.5 显示文本所有内容(除了后5行内容)
显示文本所有内容(除了后5行内容)
[root@openEuler-test ~]# head -n -5 /etc/passwd
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/usr/sbin/nologin
operator:x:11:0:operator:/root:/usr/sbin/nologin
games:x:12:100:games:/usr/games:/usr/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/usr/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/usr/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
saslauth:x:998:76:Saslauthd user:/run/saslauthd:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:D-Bus:/var/run/dbus:/sbin/nologin
 
3.6 输出显示文件名
加上
-v选项,输出结果显示文件吗。
[root@openEuler-test ~]# head -v /etc/passwd
==> /etc/passwd <==
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/usr/sbin/nologin
operator:x:11:0:operator:/root:/usr/sbin/nologin
 
3.7 输出不显示文件名
加-q选项,输出不显示文件名,默认为不显示。
[root@openEuler-test ~]# head -q /etc/passwd
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/usr/sbin/nologin
operator:x:11:0:operator:/root:/usr/sbin/nologin
 
3.8 显示文件的前10个字节
使用
-c选项,指定显示文件的字节数,例如-c 100为显示文件的前100个字符内容。
[root@openEuler-test ~]#  head -c 100 /etc/passwd; echo -e "\n"
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin
 
四、配合其他命令使用
4.1 配合管道符使用
head命令经常配合其他命令使用,例如可以与管道符一起使用。
[root@openEuler-test ~]# cat /etc/passwd |head -n 5
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
 
4.2 配合grep使用
这条命令首先查找文件中包含 “pass” 的行,然后通过管道传递给 head 只显示前 3 行匹配结果。
[root@openEuler-test ~]# grep "pass"  /etc/ssh/sshd_config  |head -n 3
# To disable tunneled clear text passwords, change to no here!
# Change to no to disable s/key passwords
# PAM authentication via KbdInteractiveAuthentication may bypass
 
4.3 与xargs配合使用
对于处理命令行参数长度受限的情况,可以先通过 head 限制输入,再传递给其他命令。
[root@openEuler-test ~]# find /etc -name "*.txt" | head -n 10 | xargs ls -l
-rw-r--r--. 1 root root 451 May 19 11:50 /etc/pki/nssdb/pkcs11.txt
 
五、注意事项
- 默认情况下 
head显示文件的前 10 行,可以通过-n选项自定义行数。 - 使用 
-c选项时要注意,它按字节数而非行数截取文件内容。 - 处理二进制文件时应谨慎使用 
head,以免破坏文件格式或导致不可预测的行为。 - 当处理非常大的文件时,使用 
head可以快速预览文件内容而不必加载整个文件。 - 在管道中使用 
head时,确保后续命令能正确处理有限的输入数据。 
