title: Why is it that we can redirect the input of 'less' command, but we can't run less without any arguments?
body: <p>as far as i learned in programming, when i want to add the input redirection to my program, i write my program as when it executed, it waits for the user's input (with <em>std::cin</em> or something similar). but i got confused by less command.</p>
  
  <p>We all know that we can do something like this:</p>
  
  <pre><code>ls -la | less
  </code></pre>
  
  <p>but when we try to execute</p>
  
  <pre><code>less
  </code></pre>
  
  <p>without any arguments we get an error. how come ?!</p>