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

kor*_*oll 6 shell bash io-redirection command-substitution

我想知道I/O 重定向命令替换之间的区别?

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

dev*_*ull 4

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

cd -P -- "$(dirname -- "$(which w3af)")"
Run Code Online (Sandbox Code Playgroud)

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

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

  • @koralgooll 通常“man”页面会建议这一点。 (3认同)