Эта функция предназначена для Bash, но нечто подобное можно сделать и для других (это может работать как есть в ksh и zsh):
cdn () { pushd .; for ((i=1; i<=$1; i++)); do cd ..; done; pwd; }
Пример использования:
/some/dirs/and/subdirs$ cdn 3
/some/dirs/and/subdirs /some/dirs/and/subdirs
/some
/some$ popd
/some/dirs/and/subdirs$
Вот функция, которая будет cd
в именованный подкаталог над текущим рабочим каталогом:
cdu () { cd "${PWD%/$1/*}/$1"; }
Пример использования:
/usr/share/atom/resources/app/apm/src/generator$ cdu apm
/usr/share/atom/resources/app/apm$ cdu resources
/usr/share/atom/resources$ cd -
/usr/share/atom/resources/app/apm$ cdu share
/usr/share
А я думал, что ленивый ...
Давным-давно я устал печатать cd ..
Итак, примерно с 1988 года одним из моих стандартных псевдонимов (и пакетных файлов для MSDOS / Windows) является
. Возможно, мне следует расширить концепцию:
alias up='cd ..'
alias up2='cd ../..'
alias up3='cd ../../..'
alias up4='cd ../../../..'
alias up5='cd ../../../../..'
alias up6='cd ../../../../../..'
Вам нужно будьте осторожны, если вы настраиваете подобные псевдонимы. Вы не всегда будете переходить на 5 каталогов, если cd ../../../../..
. Если у вас всего 2 или 3 каталога ниже /, вы попадете в /. Попробуйте сами.
$ cd ~
$ pwd
/home/you
$ cd ../../../..
$ pwd
/
Это происходит потому, что родительский каталог / на самом деле /.
Если вам не нравится вводить или запоминать имена файлов, вы можете перемещаться по каталогам с помощью чего-то вроде NerdTree?
Вы можете определить псевдонимы, чтобы упростить этот вид операции cd
.
Обратите внимание, что было бы легко сделать ошибки с псевдонимом в терминах . ./../../..
и т. д., потому что вы должны быть очень уверены в связи между вашим текущим каталогом и местом, где вы хотите быть.
Лучше использовать абсолютные пути с псевдонимом
используйте cd /
, чтобы перейти к корню вашей файловой системы, и cd ~
, чтобы перейти к ваш домашний каталог.
Пример: чтобы перейти к директору журнала, просто выполните cd /var/log[1139928 visible.
Для оболочек типа Борна (включая ksh
]), вы можете написать функцию оболочки:
cdup() {
set -- "${1-1}"
while test "$1" -gt 0; do
cd ..
set -- "$(($1-1))"
done
}
Я обычно так делаю. Конечно, в ksh для клавиш навигации может быть установлено что-то другое. Когда я использовал ksh, я установил для них стиль vi, чтобы было k
вместо стрелки вверх.
В сценариях оболочки лучше быть явным. Если вы можете использовать абсолютный путь, сделайте это и выполните такую команду, как:
cd /webdata/cgi-bin
Если сценарий может быть запущен для обработки файлов в разных каталогах, то вы можете подумать о следующем:
TOPDIR="/webdata"
cd $TOPDIR/cgi-bin
Но если вы действительно не можете сделать ни одно из этих действий, то придерживайтесь .. цепочек, например:
chmod +x *.py
cd ../../../cgi-bin
Это совершенно ясно. Выполните действие в текущем рабочем каталоге, затем перейдите на 3 уровня вверх и выберите каталог cgi-bin. Любой, кто сможет понять, что вы делаете в сценарии оболочки, должен без труда следовать этому. Если ваш сценарий действительно сложен, то было бы полезно добавить несколько комментариев вроде этого:
# change to TOPDIR/cartsys/production/code/python
cd python
chmod +x *.py
cd ../../../cgi-bin
Подразумевается, что вы были в каталоге кода и перешли на один уровень ниже на python, поэтому читатель, который забыл, где вы были в каталоге иерархия видит напоминание, которое помогает им подсчитать 3 уровня.
cd ..
<up arrow><ENTER>
<up arrow><ENTER>
<up arrow><ENTER>
<up arrow><ENTER>