- Вопрос или проблема
- Ответ или решение
- 1. Создание функции для быстрого перехода вверх по директориям
- Запись функции в .bashrc
- 2. Использование алиасов для быстрых переходов
- 3. Использование команды cd -
- 4. Поддержка многопоточности (для повышения эффективности)
- 5. Улучшение навигации с помощью горячих клавиш
- 6. Использование сторонних инструментов
- Заключение
Вопрос или проблема
если я нахожусь в очень глубокой директории a/b/c/d/e/f/g/h/i/j
и хочу вернуться в a/b/c
, мне нужно использовать ../../../../../../../
.
Есть ли команда, которую я могу вызвать с числом, например cd up 7
, чтобы ускорить эту операцию?
Вы можете написать функцию вроде этой:
up() {
local path i
for (( i=0; i < $1; i++ )); do
path+=../
done
cd "$path"
}
Поместите это в ваш ~/.bashrc
, затем вы можете выполнить, например, up 7
, чтобы подняться на 7 директорий. Вы также можете переопределить cd, чтобы разрешить cd up 7
, но создание новой команды короче и проще.
Если вы переключаетесь между 2 директориями, вы можете использовать cd -
, чтобы переключаться между ними.
Если вы хотите забукмаркать несколько директорий, в которые вы, вероятно, часто будете переходить с помощью cd
, используйте pushd
и popd
-> гуглите для получения дополнительной информации.
Или, если вы знаете, что вам нужно будет очень часто перемещаться в 7-е родительское директорию, вы можете создать псевдоним, например:
alias cd7up='cd ../../../../../../../'
Создание псевдонима будет временным решением, однако, если вы хотите что-то более постоянное, что не ограничивает вас вашими предустановками, я предлагаю написать функцию для этого и включить её в файл .bashrc.
# Подниматься по дереву директорий на X уровней
function up() {
COUNTER="$@";
# по умолчанию $COUNTER равен 1, если он не установлен
if [[ -z $COUNTER ]]; then
COUNTER=1
fi
# убедитесь, что $COUNTER - это число
if [ $COUNTER -eq $COUNTER 2> /dev/null ]; then
nwd=`pwd` # Установите новую рабочую директорию (nwd) как текущую директорию
# Поднимайтесь по дереву директорий одну за другой
until [[ $COUNTER -lt 1 ]]; do
nwd=`dirname $nwd`
let COUNTER-=1
done
cd $nwd # измените директории на новую рабочую директорию
else
# выведите использование и верните ошибку
echo "использование: up [NUMBER]"
return 1
fi
}
Будьте краткими.
alias c1='cd ../'
alias c2='c1; c1'
alias c3='c2; c1'
alias c4='c3; c1'
alias c5='c4; c1'
Приходя из мира Windows, Alt + Стрелка Вверх перемещает в родительскую директорию в Проводнике Windows. Поэтому я сделал нечто подобное в ~/.inputrc
:
"\33\33[A": "cd ..\n"
Затем нажатие Alt + Стрелка Вверх перемещает в родительскую директорию в терминале. Вам, конечно, придется нажимать несколько раз, чтобы подняться выше, но я нашел это очень быстрым. Также вы можете изменить комбинацию клавиш по своему вкусу.
Вы можете создать псевдонимы, чтобы упростить работу:
alias cd..2="cd ../.."
alias cd..3="cd ../../.."
alias cd..4="cd ../../../.."
alias cd..5="cd ../../../../.."
И затем вы можете просто ввести cd..5
, чтобы подняться на 5 уровней.
Чтобы сделать эти псевдонимы доступными для будущих входов, вы можете добавить вышеуказанное в файл .bash_profile
в вашем домашнем каталоге.
function cdl() {
local arguments;
local level_string;
local counter=1;
# первый аргумент - сколько уровней вы хотите пройти
local level=$1;
# захватите любые аргументы после начальных уровней, которые вы хотите пройти
for var in "$@"; do
if [ $counter -gt 1 ]; then
arguments="$arguments/$var";
fi
counter+=1;
done
# создайте строку на основе того, сколько уровней вы хотите подняться
if [ $level -gt 1 ]; then
counter=1;
while [ $counter -le $level ]; do
level_string="../$level_string";
let counter+=1;
done
fi
# выполните команду
cd $level_string$arguments
}
# Пример:
#-----------------
# /usr/local/src/test/directory/blah> cdl 3 я хочу быть здесь
или
# /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'
Используйте up, который позволяет прыгать в родительскую директорию по вашему выбору по имени.
up c
Используйте псевдонимы с точками в качестве имен:
alias ..='cd ../'
alias ...='cd ../../'
alias ....='cd ../../../'
alias .....='cd ../../../../'
alias ......='cd ../../../../../'
Ответ или решение
Чтобы повысить эффективность навигации по файловой системе в Unix-подобных операционных системах, особенно когда вы находитесь в глубокой вложенной директории, такой как a/b/c/d/e/f/g/h/i/j
, существует множество способов ускорить процесс перемещения вверх по дереву директорий.
1. Создание функции для быстрого перехода вверх по директориям
Запись функции в .bashrc
Самым удобным и универсальным способом является написание функции, позволяющей подниматься на несколько уровней сразу. Например, вы можете определить функцию up
, которая будет принимать количество уровней, на которые нужно подняться:
up() {
local path=""
for ((i=0; i<$1; i++)); do
path+="../"
done
cd "$path"
}
После добавления этой функции в файл ~/.bashrc
, вы сможете использовать команду up 7
, чтобы подняться на 7 уровней вверх.
2. Использование алиасов для быстрых переходов
Вы также можете создать алиасы для частых переходов на определенные уровни вверх. Например:
alias cd2='cd ../..'
alias cd3='cd ../../..'
alias cd4='cd ../../../..'
alias cd5='cd ../../../../..'
Эти алиасы значительно упростят переход на необходимые уровни. После добавления их в ~/.bashrc
вы сможете использовать команды типа cd2
, cd3
, и так далее.
3. Использование команды cd -
Если вы часто переключаетесь между двумя директориями, команда cd -
может помочь быстро вернуться в предыдущую директорию:
cd -
4. Поддержка многопоточности (для повышения эффективности)
Если вы работаете с идеей переключения между несколькими директориями, рассмотрите использование команд pushd
и popd
, которые позволяют вам управлять стеком директорий. Это удобно, если нужно временно перейти в другую директорию и затем вернуться обратно.
5. Улучшение навигации с помощью горячих клавиш
Чтобы сделать навигацию еще удобнее, вы можете настроить горячие клавиши в файле ~/.inputrc
. Например, использование комбинации Alt + Вверх для перехода на уровень вверх:
"\33\33[A": "cd ..\n"
6. Использование сторонних инструментов
Вы можете рассмотреть возможность использования таких инструментов, как up, который позволяет вам перемещаться в директорию верхнего уровня по имени. Это полезно, если вам нужно часто перемещаться между заранее известными директориями.
Заключение
Оптимизация перемещения вверх по дереву директорий в Unix-подобных системах достигается как путём создания собственных функций, так и с помощью алиасов и горячих клавиш. Каждый из предложенных инструментов вносит свою лепту в повышение эффективности работы в командной строке, позволяя минимизировать время, затрачиваемое на навигацию, что в конечном итоге повышает общую продуктивность. Добавление этих решений в файл конфигурации вашей оболочки, такой как .bashrc
, сделает их доступными при каждой сессии терминала.