当我发出时cat
,终端挂起等待 stdin 输入。但是,当less
发布时,我得到Missing filename ("less --help" for help)
. 众所周知,less
和 都cat
接受标准输入。有什么不同?这如何反映在手册页中?
less
当没有给出任何文件名参数时运行以下代码:
if (isatty(fd0))
{
error("Missing filename (\"less --help\" for help)", NULL_PARG);
quit(QUIT_OK);
}
return (edit("-"));
Run Code Online (Sandbox Code Playgroud)
当标准输入是终端时,它会抱怨。如果标准输入是一个普通的文件或管道,那就没问题了。
它可能这样做是因为它需要在每个页面的末尾读取来自终端的响应,并且无法区分正在分页的数据和响应。
这在手册页中没有提到。也许应该是。
cat
不分页输出,也不从终端读取响应。就 stdin 作为终端而言,它没有任何限制。