title: Can not pipe the output of echo command to ls
body: <p>everyone, i found this strange problem ( maybe it is a feature ) this afternoon.
  In my current working directory, there are 5 files, namely a,b,c,d,e</p>
  
  <p>If i issue the following command </p>
  
  <pre><code>echo "a" | ls -l
  </code></pre>
  
  <p>What I expect is only the detailed information of file a is listed.
  But from the output, the detailed information of file a,b,c,d,e are listed.
  It seems as if the command before the pipe is not working, eg, the following command will output exactly as if only <code>ls -l</code> is executed.</p>
  
  <pre><code>echo "whatever_you_type" | ls -l
  </code></pre>
  
  <p>I am confused, can anybody help to explain this issue?
  I know i can workaround this problem by using <code>xargs</code>, something like <code>echo "a" | xargs ls -l</code>
  But I want to know why.</p>