命令替换与 I/O 重定向?

命令替换与 I/O 重定向?

我想知道之间的差异输入/输出重定向命令替换

例如,当我想将which命令输出重定向到cd命令(我知道它不是目录)时,该cd命令不使用 which重定向。
例如which w3af | cd?我必须使用命令替换,例如cd $( which w3af ),为什么?

答案1

对于您引用的具体示例,您需要使用命令替换:

cd -P -- "$(dirname -- "$(which w3af)")"

原因很简单,cd不通过STDIN.它只接受参数。

此外,which command会生成文件路径而不是目录。

答案2

这是测试命令是否接受的一种方法stdin。请注意,这并不详尽:

% { wc ; cat ; } <<INTEST
    nope
INTEST

> 1 1 5

% { cd ; cat ; } <<INTEST
    nope
INTEST

> nope

相关内容