быстрее подниматься по дереву каталогов

Вопрос или проблема

если я нахожусь в очень глубокой директории 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, сделает их доступными при каждой сессии терминала.

Оцените материал
Добавить комментарий

Капча загружается...