Есть ли более короткий синтаксис для изменения нескольких уровней каталогов с помощью bash cd? - PullRequest
1 голос
/ 03 июля 2019

Если мне нужно перейти в какой-либо каталог на несколько уровней выше, я обычно делаю это в bash:

cd ../../../../some/other/folder

Поскольку вводить все эти периоды и косые черты довольно раздражает, мне было интересно, есть ликакой-то более короткий способ напечатать это;как например:

cd ..4/some/other/folder

Я не смог найти его так далеко от, например, cd --help.

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

Стандартного пути нет.

Вы можете объявить функцию, которая принимает количество родительских каталогов в качестве первого аргумента и относительный путь в качестве второго:

cdu () {
    local n=$1
    local p=""
    while ((n--)) ; do
        p+=../
    done
    cd "$p/$2"
}

Затем вы можете сократить cd ../../../bin до cdu 3 bin

Я использую

alias ..='cd ..'
alias ...='cd ../..'

Чтобы поднять 6 уровней, я просто набираю ... + Введите три раза .

1 голос
/ 03 июля 2019

в соответствии с man-страницей cd, немедленный ответ - "нет".

если это поможет, вы можете добавить в ваш .bashrc следующее:

export prev1=".."
export prev2="../.."
export prev3="../../.."
export prev4="../../../.."

и т. Д.

пример:

export prev4="../../../.."
mkdir -p /1/2/3/4/5
cd /1/2/3/4/5
pwd => result is /1/2/3/4/5
cd $prev4
pwd => result is /1
...