Я часто делаю команды как это
cd ../../../../../
Существует ли ярлык, который я могу использовать, который будет CD../n времена?
Нет, нет никакой существующей команды для этого, но это тривиально для записи того. Добавьте эти строки к Вашему ~/.bashrc
файл:
function ncd(){
path=""
for ((i=1;i<=$1;i++)); do
path="../$path"
done
echo "Moving to $path" >&2
cd "$path"
}
Сохраните файл, откройте новый терминал, и можно теперь переместить каталоги N с помощью ncd N
. Например:
$ pwd
/home/terdon/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9
$ ncd 5
Moving to ../../../../../
$ pwd
/home/terdon/dir1/dir2/dir3/dir4
$ ncd 2
Moving to ../../
$ pwd
/home/terdon/dir1/dir2
Можно легко создать псевдонимы или окружить функции для выполнения данной задачи. Я лично использую их:
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
и так далее, вручную определенный для много-многих точек в моем .bashrc
.
Функция оболочки могла вместо этого легко взять числовой параметр и выполниться cd ..
в цикле это много раз.
Исходя из мира Windows, Alt + стрелка вверх позволяет перейти к родительский каталог
в проводнике Windows. Итак, я сделал что-то подобное в ~ / .inputrc
:
"\33\33[A": "cd ..\n"
, затем нажатие Alt + стрелка вверх перемещает в родительский каталог в терминале. Ты конечно, нужно нажимать несколько раз, чтобы подняться выше, но я обнаружил, что это очень быстро. Также вы можете изменить ярлык по своему вкусу.
Другая возможность - это физическая отправка клавиш, если у вас есть xdotool
:
xdotool type ../
Назначьте ее горячей клавише через диалоговое окно «Клавиатура» -> «Горячие клавиши». Затем вы можете нажать горячую клавишу необходимое количество раз.
Подобно ответу @terdon, с немного более естественным использованием и выводом:
# go up
up() {
local count="${1:-1}"
local path=../
while (( --count > 0 )) ; do
path="$path"../
done
echo "cd -- $path"
cd -- "$path"
}
Это определяет функцию up
, которая имеет следующие свойства:
up n
поднимется n
каталогов вверх
поднимется ровно на один каталог (т. Е. Значение по умолчанию для n
равно 1). shopt -s autocd
(отсюда -
, которые являются
технически не требуется) OLDPWD
правильно настроен на текущее значение PWD
, скорее
чем один из промежуточных каталогов. Это означает, что до 5; cd -
работает
как и ожидалось. Если вы используете zsh, вы можете использовать повторение:
repeat 5 { cd ..}
Использование хака printf:
function updir(){
cd $(printf '../%.0s' {1..$1})
}
E.G. updir 5
переместит вас на 5 каталогов вверх.
Я использовал это в течение многих лет:
alias up=" cd .."
alias up2="cd ../.."
alias up3="cd ../../.."
alias up4="cd ../../../.."
alias up5="cd ../../../../.."
alias up6="cd ../../../../../.."
alias up7="cd ../../../../../../.."
alias up8="cd ../../../../../../../.."
alias up9="cd ../../../../../../../../.."
В Zsh вы можете просто добавить одну точку для каждого уровня, то есть
кд ...
равно кд ../ ..
и cd ......
равно cd ../../../../ ..
К сожалению, это не может использоваться вместе с другими компонентами пути, то есть такими командами, как
cd ...../foo
не работают.
См. Также дополнительные советы по команде cd
в Zsh .