переход в родительский каталог в unix
В общем мы используем
cd ..
для перехода в родительский каталог
cd ../../
перейти в родительский каталог parents. и
cd ../../../../../
для 5-го родительского каталога.
есть ли упрощенный способ это сделать?
оболочка, которую я использую, - это ksh.
9 ответов
эта функция для Bash, но что-то подобное может быть сделано для других (это может работать как-есть в ksh и zsh):
cdn () { pushd .; for ((i=1; i<=; 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%//*}/"; }
пример использования:
/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
вы должны быть осторожны, если вы устанавливаете любые псевдонимы, как это. Вы не всегда будете подниматься на 5 каталогов, когда вы cd ../../../../..
. Если вы только 2 или 3 каталога вниз от / вы окажетесь в /. Попробуйте сами.
$ cd ~
$ pwd
/home/you
$ cd ../../../..
$ pwd
/
это происходит потому, что родительский каталог / фактически /.
и я думал, что я ленивый...
давным-давно я устал печатать cd ..
Итак, примерно с 1988 года одним из моих стандартных псевдонимов (и пакетных файлов для MSDOS/Windows) является up
. Возможно, мне следует расширить понятие:
alias up='cd ..'
alias up2='cd ../..'
alias up3='cd ../../..'
alias up4='cd ../../../..'
alias up5='cd ../../../../..'
alias up6='cd ../../../../../..'
вы можете проверить новый проект bd
если вы находитесь на этом пути
/home/user/project/src/org/main/site/utils/file/reader/whatever
и вы хотите поехать в site
каталог быстро (вместо ввода cd ../../../..
),
затем просто введите:
bd site
Если вам не нравится печатать или запоминать имена файлов, вы можете перемещаться по каталогам с чем-то вроде NerdTree?
вы можете определить псевдонимы, чтобы упростить этот вид cd
операции.
обратите внимание, что было бы легко сделать ошибки с псевдонимом в терминах ../../../..
etc, потому что вы должны быть очень уверен в отношениях между вашим текущим каталогом и тем, где вы хотели быть.
лучше использовать абсолютные пути с alias
использовать cd /
перейти к корневой файловой системе и cd ~
перейти к вам домой каталог.
Пример: чтобы зайти к вам лог-директор просто сделайте cd /var/log
.
для оболочек типа Борна (включая ksh
), вы можете написать функцию оболочки:
cdup() {
set -- "${1-1}"
while test "" -gt 0; do
cd ..
set -- "$((-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>