使用别名cd到可执行文件目录

问题描述 投票:0回答:2

我正在尝试编写一个别名,允许我将当前目录发送到可执行文件目录。到目前为止我有这个,但它正在将我的论点添加到路径中......

alias whichcd="cd $(basename "$(dirname "$1")")"

我这样运行:

$ whichcd test_bin
/home/user/test_binfinal_path

test_binfinal_pathtest_bin论证的附属物,也是which产生的最终路径。

bash shell alias zsh
2个回答
4
投票

有三个问题:

  1. 使用双引号时,$(..)会在您创建别名时运行,而不是在运行时运行。
  2. 别名不能使用像$1这样的位置参数。
  3. 从你的描述听起来你想要dirname + which而不是basename + dirname

所以使用一个函数:

whichcd() {
  cd "$(dirname "$(which "$1")")"
}

现在whichcd ls将带你到/bin,因为那是/bin/ls的地方。


0
投票

我不会重新解释其他人已经解释过的事情。

我有这个非常相同,但我正在使用realpath除了已经说过man realpath,如果which boo指向一个目录,其中boo实际上是一个符号链接和真正的boo是somewhereElse,它cds到某个地方

goto () {
    cd $(dirname $(realpath $(which $1)))
}
© www.soinside.com 2019 - 2024. All rights reserved.