head 命令允许您在标准输出中查看文件的初始行,而无需打开文件。 在本文中,学习了如何使用此实用程序及其选项。
Linux head命令
head 命令用于打印文件或标准输出的前几行(默认为 10 行)。以下是 head 命令的基本语法:
head [OPTION]… [FILE]…
当你使用没有任何选项的 head 命令时,它会默认显示前 10 行,如下所示:
如果文件少于十行,它当然会打印所有行。
用head命令打印前N行
当您需要打印特定的行数时,可以使用 -n 选项后跟行数。
head -n filename
例如,要显示前 30 行,您可以使用以下命令:
打印除最后 N 行以外的所有内容
您可以通过向 -n 选项提供负数来排除文件末尾的特定行数并打印文件的剩余内容。例如,如果要保留文件的最后 15 行,可以使用以下命令:
head显示多个文件
例如,如果您必须显示两个文件的前两行,您可以使用如下内容:
如果给定多个文件,则每个文件名在输出中显示为标题。每个文件的输出用 == > 文件名 <== 分隔。
显示特定的字节数
使用 -c (–bytes) 选项显示特定的字节数:
head -c filename
例如,要打印文件 tls.py 的前 200 字节数据:
还可以使用乘数来指定字节数。 b 乘以 512,kB 乘以 1000,K 乘以 1024,MB 乘以 1000000,M 乘以 1048576,依此类推。
输出中省略文件名
head 命令将文件名打印为每个文件输出上方的标题以分隔它们。您可以使用 -q 选项(安静模式)从输出中省略文件名。
可能还注意到,不会为单个输入文件打印标题。 还可以使用 -v 选项(详细模式)强制它打印文件名。
Linux head命令C/C++实现
int main(int argc, char *argv[])
{
obsolete(argv);
while ((ch = getopt(argc, argv, "c:n:qv")) != -1)
switch(ch)
{
case 'c': /* 打印起始的SIZE字节 */
errno =0;
bytecnt = strtoimax(optarg, &ep, 10);
if ((bytecnt == INTMAX_MAX && errno == ERANGE)||
*ep || bytecnt <= 0)
errx(1,"illegal byte coynt -- %s",optarg);
break;
case 'n': /* 显示起始的NUMBER行,而非默认的起始10行 */
errno = 0;
linecnt = strtoimax(optarg, &ep, 10);
if ((linecnt == INTMAX_MAX &&errno == ERANGE) || *ep || linecnt <= 0)
errx(1, "illegal line count -- %s",optarg);
break;
case 'q': /* 从不显示给出文件名的首部 */
qflag = 1;
vflag = 0;
break;
case 'v': /* 从不显示给出文件名的首部 */
qflag = 0;
vflag = 1;
break;
case '?':
default:
usage();
}
argc -= optind;
argv += optind;
...
}
总结
Linux head 命令将一个或多个文件(或管道数据)的第一行打印到标准输出。 默认情况下,它显示前 10 行。
欢迎关注微信公众号【程序猿编码】,需要head命令完整源码的添加本人微信号(c17865354792)