如何将 which
命令的结果通过管道传送到 cd
?
这就是我想要做的:
which oracle | cd
cd < which oracle
但它们都不起作用。
有没有办法实现这一点(当然不是复制/粘贴)?
编辑:再想一想,这个命令会失败,因为目标文件不是文件夹/目录。
所以我现在正在考虑并想出一个更好的方法来摆脱尾随的“/oracle”部分(sed 或 awk,甚至 Perl):)
编辑: 好的,这就是我最后得到的:
cd `which oracle | sed 's/\/oracle//g'`
最佳答案
在命令需要来自标准输入的参数的情况下,您可以使用管道。 (More on this)。
用cd
命令就不是这样了。目录是命令参数。在这种情况下,您可以使用命令替换。使用反引号或 $(...)
来评估命令,将其存储到变量中..
path=`which oracle`
echo $path # just for debug
cd $path
虽然它可以以更简单的方式完成:
cd `which oracle`
或者如果你的路径有特殊字符
cd "`which oracle`"
或
cd $(which oracle)
相当于反引号,但推荐使用(反引号可能与撇号混淆)
.. 但它看起来像你想要的:
cd $(dirname $(which oracle))
(这表明您可以轻松使用嵌套)
$(...)
(以及反引号)也可以在双引号字符串中使用,这在结果最终可能包含空格时会有所帮助..
cd "$(dirname "$(which oracle)")"
(请注意,两个输出都需要一组双引号。)
https://stackoverflow.com/questions/3437514/