$()与重定向有何不同?

时间:2015-10-09 10:13:02

标签: linux shell terminal

我从“Linux命令行”一书中学习命令行,我有一个疑问。 不应该 ls -l $(which cp)which cp | ls -l具有相同的输出? 因为我正在获取cp的输出并将其传递给ls -l 但这并不像预期的那样奏效。 which cp | ls -l代替显示pwd

的内容

2 个答案:

答案 0 :(得分:2)

ls并不关心标准输入中的内容。

echo anything | ls -l
                      ^^^

由于您尚未提供要列出的目录,因此会列出pwd

答案 1 :(得分:1)

在第一种情况下,ls接收结果作为参数,在第二种情况下,它在输入流(stdin)中接收它,在这种情况下被忽略。

您可以使用xargs从输入流转换为参数:

which cp | xargs ls -l