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