Как я препятствую тому, чтобы команда 'CD' шла в корневой каталог?

Вещь состоит в том, что иногда я ввожу cd по ошибке и которые берут меня к корневому каталогу.

например, я нахожусь в каталоге, которые имеют скрытый каталог и видимый каталог, я быстро нажимаю cd+tab и это берут меня к корневому каталогу

10
задан 22 October 2018 в 12:51

4 ответа

Если это связано с завершением вкладки, один из вариантов - немедленно выполнить цикл завершения по записям. Это можно сделать, используя опцию readline menu-comple вместо значения по умолчанию complete:

bind 'tab: menu-completion'

Затем, в моем домашнем каталоге, например:

$ cd <tab> # becomes
$ cd .Trash
< hr>

Конечно, даже тогда вам придется читать то, что вы выполняете.

6
ответ дан 23 November 2019 в 04:18

Вот как я помещаю имя текущего пользователя и пользователя в заголовок моего окна. Вы можете адаптировать его к своим потребностям, но cd -, эквивалентное cd $OLDPWD, является лучшим решением.

Из моего ~/.bashrc:

# from the "xttitle(1)" man page - put info in window title
update_title()
{
    [[ $TERM = xterm ]] || [[ $TERM = xterm-color ]]  && xttitle "[$] ${USER}@${HOSTNAME}:$PWD"
}

cd()
{
    [[ -z "$*" ]] && builtin cd $HOME
    [[ -n "$*" ]] && builtin cd "$*"
    update_title
}
4
ответ дан 23 November 2019 в 04:18

Проблема здесь не в cd, и она не решена технологией.

Проблема в вас, и она решается с терпением!

Если вы часто сталкиваетесь с вводом и отправкой ненужных вам команд, потренируйтесь в замедлении . Сделайте вдох, прочитайте то, что вы печатаете, и дважды проверьте его, прежде чем нажать Enter. Продумайте это до конца. Не торопитесь.

Вы обнаружите, что этот подход не только решает проблему, но и другие гораздо худшие проблемы , с которыми вы столкнетесь, если продолжите свой текущий путь.

4
ответ дан 23 November 2019 в 04:18

Использовать gedit ~/.bashrc и вставьте эти строки внизу:

cd() {
    [[ $# -eq 0 ]] && return
    builtin cd "$@"
}

Откройте новый терминал и теперь когда Вы введете cd без параметров Вы просто остаетесь в том же каталоге.


TL; DR

Если Вы хотите быть действительно тщательно продуманными, можно вставить экран справки, когда никакие параметры не передаются:

$ cd

cd: missing operand

Usage:

    cd ~            Change to home directory. Equivelent to 'cd /home/$USER'

    cd -            Change to previous directory before last 'cd' command

    cd ..           Move up one directory level

    cd ../..        Move up two directory levels

    cd ../sibling   Move up one directory level and change to sibling directory

    cd /path/to/    Change to specific directory '/path/to/' eg '/var/log'

Расширенный код для выполнения этого:

cd() {
    if [[ $# -eq 0 ]] ; then
        cat << 'EOF'

cd: missing operand

Usage:

    cd ~            Change to home directory. Equivelent to 'cd /home/$USER'

    cd -            Change to previous directory before last 'cd' command

    cd ..           Move up one directory level

    cd ../..        Move up two directory levels

    cd ../sibling   Move up one directory level and change to sibling directory

    cd /path/to/    Change to specific directory '/path/to/' eg '/var/log'

EOF
        return
    fi

    builtin cd "$@"
}
14
ответ дан 23 November 2019 в 04:18

Другие вопросы по тегам:

Похожие вопросы: