Linux 中的 head 命令详解及C/C++代码实现

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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部