【问题标题】:Why "which cp | ls -l " is not treate as "ls -l $(which cp)"?为什么“which cp | ls -l”不被视为“ls -l $(which cp)”?
【发布时间】:2015-02-05 04:33:41
【问题描述】:

根据 Linux 中的管道方法,第一个命令的输出应被视为第二个命令的输入。所以我在做which cp | ls -l的时候,应该被当成ls -l $(which cp)处理

但输出显示了其他内容。

为什么会这样?

【问题讨论】:

  • 运行它时会显示什么?还要考虑 WHICH 可能不会返回值的事实。
  • 列出当前目录下文件/目录的信息。它显示与“ls -l”相同的输出。

标签: linux bash command-line pipe ls


【解决方案1】:

ls 不接受来自stdin 的输入。如果需要,您可以使用xargs 解决此问题:

which cp | xargs ls -l

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2011-01-30
    • 1970-01-01
    • 2016-09-30
    • 2010-11-12
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    相关资源
    最近更新 更多