我想知道之间的差异输入/输出重定向和命令替换?
例如,当我想将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