如何在绝对路径中的目录之间导航
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
我在绝对路径为 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