如何在绝对路径中的目录之间导航

how to navigate between directories in absolute path

我在绝对路径为 aa/bb/cc/dd/ee/ff/gg/hh/ii 的目录中工作。 现在我想跳转到目录dd。我知道我们可以多次使用 cd ../.. 返回,但我想知道有没有更快的方法?

我正在寻找类似 CMD DIR(在 PWD 中)的方法,它会跳转到 DIR。 例如。 $ jump dd 应该导致终端跳转到 aa/bb/cc/dd。

您可以编写自己的 shell 函数,看起来有点像这样:

up() {
    local target dir
    target=""
    dir="$PWD"
    while ! [ "$(basename "$dir")" = "$target" ]; do
        dir="$(dirname "$dir")"
        if [ "$dir" = "/" ]; then
            >&2 echo "No such directory found"
            return
        fi
    done
    cd "$dir"
}

我在 Bash 和 Zsh 中半心半意地测试了这个。

如果你把它放在一个名为 up.sh 的文件中,你可以获取该文件以获取 访问此功能。如果你想一直拥有它,你应该把它放在 适当的 rc 文件。

下面是一些示例用法:

$ mkdir -p aa/bb/cc/dd/ee/ff/gg/hh/ii

$ cat up.sh
up() {
    ...
}

$ source up.sh
$ cd aa/bb/cc/dd/ee/ff/gg/hh/ii
$ up xyz
No such directory found

$ up bb
$ pwd
.../aa/bb