Вы можете написать свою собственную функцию оболочки, которая выглядит примерно так:
up() {
local target dir
target="$1"
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