管道输出从一个命令到另一个命令的非标准输入

Avl*_*xis 2 shell pipe output arguments

我想做类似以下的事情:

which someapplciation | cd outputfrompreviouscommand
Run Code Online (Sandbox Code Playgroud)

该命令which提供了一个目录,我希望能够使该输出我当前的工作目录,而不使用编程语言,即awkbashperl等,仅使用管道命令。

进一步举个例子:

which vi
Run Code Online (Sandbox Code Playgroud)

提供输出

/some/dir
Run Code Online (Sandbox Code Playgroud)

我希望我的工作目录被移动到那个目录,我可以使用pwd命令来测试该目录,该命令的输出应该与/some/dir.

Gre*_*ill 7

如果您正在运行的第二个命令没有从其标准输入中读取,则不能使用管道。但是,您可以执行以下操作

cd $(which someapplication)
Run Code Online (Sandbox Code Playgroud)

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

cd $(dirname $(which someapplication))
Run Code Online (Sandbox Code Playgroud)

所述$(...)外壳操作者括号内执行该命令并替换其输出到命令行。