将一个命令的输出通过管道传输到另一命令的非标准输入

将一个命令的输出通过管道传输到另一命令的非标准输入

我想做类似以下的事情:

which someapplciation | cd outputfrompreviouscommand

该命令which提供了一个目录,我希望能够在不使用编程语言(即 、 、 等)的情况下将该输出输出到我当前的工作目录,awk并且bashperl使用管道命令。

进一步举个例子:

which vi

提供输出

/some/dir

我希望将我的工作目录移动到该目录,我可以使用pwd应该具有与/some/dir.

答案1

如果您运行的第二个命令不从其标准输入读取,则无法使用管道。但是,你可以做类似的事情

cd $(which someapplication)

或者,因为您需要目录名称cd而不是可执行文件名称:

cd $(dirname $(which someapplication))

shell$(...)运算符执行括号内的命令并将其输出替换到命令行中。

相关内容