更多地使用命令是很常见的。更多通常与管道一起使用。所以我认为更有能力从stdin读取。由管道分隔的每个命令都是一个进程,而更多的命令只是创建管道,并将写入管道复制到更多的stdin。但我发现如果我在控制台中键入“更多”,只会显示一些用法。那是怎么回事?
答案 0 :(得分:2)
这是一个功能。它检测到其标准输入已连接到终端,并显示帮助消息而不是继续。在您手动输入内容时,几乎没有在输入上运行寻呼机的情况。如果你真的想要,请尝试cat | more
。
答案 1 :(得分:2)
为什么你认为有什么不对?为终端输出更多页面,那么等待足够的类型化stdin输入到页面的重点是什么?
如果您输入more
和一个或多个文件名,它将会输入该输入。所以行为就像:
am I attached to a terminal? ("isatty")
are there filenames in argv
page files
else
display help
else
page pipe input
答案 2 :(得分:2)
为了什么值得,我查看了我的linux发行版中的存储库提供的源包,发现了这个:
if (!no_intty && nfiles == 0) {
usage(argv[0]);
exit(1);
}
因此,如果未检测到输入,则行为确实显示用法消息。