为什么“哪个cp | ls -l“不是”ls -l $(哪个cp)“?

根据Linux中的pipe道方法,第一个命令的输出应该作为第二个命令的input。 所以当我在做which cp | ls -l which cp | ls -l ,它应该被视为ls -l $(which cp)

但是输出显示了别的东西。

为什么这样 ?

ls不接受stdin 。 如果你需要使用xargs你可以解决这个问题:

 which cp | xargs ls -l 

这将调用ls -l (可能是多个,如果返回多个)文件名作为命令行参数,没有标准输入。