Если я нахожусь в очень глубоком каталоге a/b/c/d/e/f/g/h/i/j
и хочу вернуться a/b/c
, я должен использовать ../../../../../../../
.
Есть ли команда, которую я могу пройти через номер, например, cd up 7
, чтобы ускорить эту операцию?
Создание псевдонима будет работать как временное решение, однако, если вы хотите что-то более постоянное, которое не ограничивает вас вашими пресетами, я предлагаю написать для этого функцию и включить ее в ваш файл .bashrc.
# Go up directory tree X number of directories
function up() {
COUNTER="$@";
# default $COUNTER to 1 if it isn't already set
if [[ -z $COUNTER ]]; then
COUNTER=1
fi
# make sure $COUNTER is a number
if [ $COUNTER -eq $COUNTER 2> /dev/null ]; then
nwd=`pwd` # Set new working directory (nwd) to current directory
# Loop $nwd up directory tree one at a time
until [[ $COUNTER -lt 1 ]]; do
nwd=`dirname $nwd`
let COUNTER-=1
done
cd $nwd # change directories to the new working directory
else
# print usage and return error
echo "usage: up [NUMBER]"
return 1
fi
}
Если вы переключаетесь между двумя каталогами, вы можете использовать cd -
для переключения между ними.
Если вы хотите добавить в закладки несколько каталогов, которые вы, вероятно, часто посещаете, используйте pushd
и popd
-> google для получения дополнительной информации.
Или, если вы знаете, что вам приходится часто переписываться с 7-м прародителем, вы можете создать псевдоним, например
alias cd7up = 'cd ../../../. ./../../../'
blockquote>
Можно создать псевдонимы, чтобы сделать работу.
CD псевдонима.. 2 = "CD../.."
CD псевдонима.. 3 = "CD../../.."
CD псевдонима.. 4 = "CD../../../.."
CD псевдонима.. 5 = "CD../../../../.."
И затем можно просто ввести cd..5
повыситься 5 уровней.
Для предоставления доступа к тем псевдонимам доступными в будущих логинах можно добавить вышеупомянутое к .bash_profile файлу в домашнем dir.
Будь лаконичен.
alias c1='cd ../'
alias c2='c1; c1'
alias c3='c2; c1'
alias c4='c3; c1'
alias c5='c4; c1'
Вы могли бы написать такую функцию:
up() {
local path i
for (( i=0; i < $1; i++ )); do
path+=../
done
cd "$path"
}
Поместите это в свой ~/.bashrc
, тогда вы можете запустить, например up 7
перейти на 7 каталогов. Вы также можете переопределить cd, чтобы разрешить cd up 7
, но просто создание новой команды короче и меньше хлопот.
function cdl() {
local arguments;
local level_string;
local counter=1;
# first argument is how many levels you wish to traverse
local level=$1;
# grab any argument after the initial levels you wish to traverse
for var in "$@"; do
if [ $counter -gt 1 ]; then
arguments="$arguments/$var";
fi
counter+=1;
done
# build string based on how many levels you want to go up
if [ $level -gt 1 ]; then
counter=1;
while [ $counter -le $level ]; do
level_string="../$level_string";
let counter+=1;
done
fi
# execute command
cd $level_string$arguments
}
# Example:
#-----------------
# /usr/local/src/test/directory/blah> cdl 3 i want to be here
или
# /usr/local/src/test/directory/blah> cdl 3 i/want/to/be/here
результат:
# /usr/local/src/i/want/to/be/here>
#-----------------
Конечно, я также добавляю псевдонимы в мой файл .bashrc
, используя вышеуказанную функцию
alias cd2='cdl 2'
alias cd3='cdl 3'
alias cd4='cdl 4'
alias cd5='cdl 5'
При переходе из мира Windows при нажатии Alt + стрелка вверх осуществляется переход в родительский каталог.
в проводнике Windows. Итак, я сделал что-то вроде этого в ~ / .inputrc
:
"\33\33[A": "cd ..\n"
, затем нажатие Alt + стрелка вверх перемещает в родительский каталог в терминале. Ты конечно, нужно нажимать несколько раз, чтобы подняться выше, но я обнаружил, что это очень быстро. Также вы можете изменить ярлык по своему вкусу.