Я постоянно собираюсь "CD ../../../../». Есть ли команда /псевдоним, который может позволить мне перейти 'cmd 4', и я вернусь 4 каталога?
9 ответов
Поместите это в ваш ~/.bashrc
:
cdup() {
levels=${1-1}
while ((levels--)); do
cd ..
done
}
(Имя cdup
происходит от соответствующей команды FTP, только к вашему сведению.)
Меня учили использовать «pushd» и «popd» для таких обстоятельств.
Например, введите «pushd». а затем «CD / Home». Теперь введите «popd», и вы вернетесь туда, откуда начали.
«pushd» /«popd» - это стек, вы можете помещать туда столько каталогов, сколько захотите, но он включается в последнюю очередь, сначала при запуске popd.
Конечно, почему бы и нет
up() { [ $# = 0 ] && cd .. && return [ $1 = 0 ] && return cd .. && up $(($1 - 1)) }
Быстро и грязно:
cmd () { dir=.; for i in $(seq 1 $1); do dir=$dir/..; done; pushd $dir; }
Сформулировано, чтобы изменить каталог только один раз.
Вот альтернативный способ:
function cdup
{
cd $(for ((i=0 ; i<$1 ;i++)); do printf "../" ; done)
}
Создайте путь, используя printf
затем cd
к нему:
cdup() {
local path
printf -v path '%*s' "${1:-1}"
cd "${path// /../}"
}
Использовать как:
cdup 4 # to go up four directories
cdup 1 # to explicitly go up one directory
cdup # to implicitly go up one
Возможно, вы захотите изучить использование pushd
и popd
для установки маркеров местоположения и легко вернуться туда из любого каталога, в который вы изменили.
Вы также можете установить переменную с именем каталога, который вы часто используете, затем CD там:
MYPROJ=~/projects/name/src
cd $MYPROJ
proj1='cd $MYPROJ'
Я использую autojump, который позволяет мне печатать:
j h
>> /home/cjulien
j et
>> /etc
он может учиться на ваших привычках и очень легкий (и вызывающий привыкание;))
Две мысли, которые могут быть вам полезны:
CD -
вернитесь к последнему каталогу, в котором вы были. Я использую это все время, чтобы перейти из глубины моего дерева кода обратно к его корню ... хотя это работает только в том случае, если вы перейдете в него за одно изменение.cdd старый новый
это была функция скрипта, которую я написал в прошлом, которую я использовал для перемещения между похожими деревьями. По сути, он взял два аргумента и сделал регулярное выражение на вашем пути, отлично подходит для перемещения между ветвями и тому подобным. Например, если вы находитесь в ~/bzr/web/trunk/path/to/feature и вам нужно попасть в ~/bzr/web/feature-branch/path/to/feature, тогда вы должны выполнитьcdd trunk feature-branch
. Реализация, которую я имел, была на архаичном языке оболочки в AIX, но она была довольно тривиальной, поэтому ее легко реализовать в выбранной оболочке, если вам это нужно. Для нас это было очень полезно, потому что структура выглядела следующим образом: .../{product}/{version}/{release}/{src, bld, dbg, pkg, tst}/{component}/... так перемещается в этом дереве стало безумно довольно быстро.