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)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值