Mic*_*Mao 78 linux bash shell cd
我如何将which命令的结果传递给cd?
这就是我想要做的:
which oracle | cd
cd < which oracle
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用.
有没有办法实现这一点(而不是复制/粘贴)?
编辑:第二个想法,此命令将失败,因为目标文件不是文件夹/目录.
所以我正在考虑并找出一个更好的方法来摆脱现在的尾随"/ oracle"部分(sed或awk,甚至是Perl):)
编辑:好的,这就是我最终得到的:
cd `which oracle | sed 's/\/oracle//g'`
Run Code Online (Sandbox Code Playgroud)
myk*_*hal 109
在命令需要标准输入的参数的情况下使用管道.(更多关于此).
使用cd命令并非如此.该目录是命令参数.在这种情况下,您可以使用命令替换.使用反引号或$(...)评估命令,将其存储到变量中..
path=`which oracle`
echo $path # just for debug
cd $path
Run Code Online (Sandbox Code Playgroud)
虽然它可以用更简单的方式完成:
cd `which oracle`
Run Code Online (Sandbox Code Playgroud)
或者如果你的路径有特殊字符
cd "`which oracle`"
Run Code Online (Sandbox Code Playgroud)
要么
cd $(which oracle)
Run Code Online (Sandbox Code Playgroud)
这相当于反引号符号,但建议(反引号可以与撇号混淆)
..但看起来你想要:
cd $(dirname $(which oracle))
Run Code Online (Sandbox Code Playgroud)
(告诉你可以轻松使用嵌套)
$(...) (以及反引号)也可以在双引号字符串中工作,这有助于结果最终可能包含空格.
cd "$(dirname "$(which oracle)")"
Run Code Online (Sandbox Code Playgroud)
(请注意,两个输出都需要一组双引号.)
小智 22
用dirname来获取目录:
cd $(which oracle | xargs dirname)
Run Code Online (Sandbox Code Playgroud)
编辑:注意包含空格的路径,请参阅下面的@anishpatel评论
| 归档时间: |
|
| 查看次数: |
34456 次 |
| 最近记录: |