为什么我们可以重定向'less'命令的输入,但是没有任何参数我们不能少运行?

时间:2014-03-04 23:36:54

标签: shell unix less-unix

据我在编程中学到的,当我想将输入重定向添加到我的程序时,我将程序编写为执行时,它等待用户的输入(使用 std :: cin 或类似的东西)。但是我对较少的命令感到困惑。

我们都知道我们可以这样做:

ls -la | less

但是当我们尝试执行

less

没有任何参数我们得到一个错误。怎么来的?!

2 个答案:

答案 0 :(得分:4)

less接受来自stdin或文件的输入。

由于接受来自终端的输入没有意义(只是为了向终端显示相同的输入),less程序可能检查stdin是否是终端(isatty )并拒绝参加。

请参阅man 3 isatty

答案 1 :(得分:2)

Less是一个寻呼机,一个程序的UNIX术语,一次显示输出一个屏幕。如果将程序的输出传递给less,它会一次显示输出一页。如果在命令行上传递文件名,则会逐页显示这些文件。

如果你两个都没有,那就没有什么可以翻阅的了。它抛出一个错误,因为它没有任何明智的做法。你想要它展示什么?