我正在尝试编写一个别名,允许我将当前目录发送到可执行文件目录。到目前为止我有这个,但它正在将我的论点添加到路径中......
alias whichcd="cd $(basename "$(dirname "$1")")"
我这样运行:
$ whichcd test_bin
/home/user/test_binfinal_path
test_binfinal_path
是test_bin
论证的附属物,也是which
产生的最终路径。
有三个问题:
$(..)
会在您创建别名时运行,而不是在运行时运行。$1
这样的位置参数。dirname
+ which
而不是basename
+ dirname
所以使用一个函数:
whichcd() {
cd "$(dirname "$(which "$1")")"
}
现在whichcd ls
将带你到/bin
,因为那是/bin/ls
的地方。
我不会重新解释其他人已经解释过的事情。
我有这个非常相同,但我正在使用realpath除了已经说过man realpath
,如果which boo
指向一个目录,其中boo
实际上是一个符号链接和真正的boo
是somewhereElse,它cd
s到某个地方
goto () {
cd $(dirname $(realpath $(which $1)))
}