我经常想要更改到特定可执行文件所在的目录.所以我喜欢类似的东西
cd `which python`
Run Code Online (Sandbox Code Playgroud)
切换到安装python命令的目录.但是,这显然是非法的,因为cd占用目录,而不是文件.显然有一些regexp-foo我可以做的去除文件名,但这会打败它是一个简单的单行.
Lan*_*son 16
这里:
cd $(dirname `which python`)
Run Code Online (Sandbox Code Playgroud)
编辑:
更容易(这次实际测试):
function cdfoo() { cd $(dirname `which $@`); }
Run Code Online (Sandbox Code Playgroud)
然后"cdfoo python".
为了避免所有那些外部程序('dirname',更糟糕的是,无用但流行的'哪个')可能有点重写:
cdfoo() {
tgtbin=$(type -P "$1")
[[ $? != 0 ]] && {
echo "Error: '$1' not found in PATH" >&2
return 1
}
cd "${tgtbin%/*}"
}
Run Code Online (Sandbox Code Playgroud)
这也修复了上面的非常见关键字'function'并添加(非常简单)错误处理.
可能是一个更复杂的解决方案的开始.