如何防止“cd”命令进入主目录?

如何防止“cd”命令进入主目录?

问题是,有时我会输入cd错误,然后会将我带到主目录。

例如,我位于一个包含隐藏目录和可见目录的目录中,我快速按cd+tab即可进入主目录

答案1

使用gedit ~/.bashrc并在底部插入以下行:

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

打开一个新终端,现在当您输入cd任何不带参数的内容时,您只会停留在同一个目录中。


总结

如果您想要真正详细说明,您可以在没有传递任何参数时放入帮助屏幕:

$ 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 "$@"
}

答案2

如果是 Tab 补全导致此问题,一种选择是让补全循环立即遍历条目。可以使用readline 的menu-comple选项,而不是默认的complete

bind 'tab: menu-completion'

然后,在我的主目录中,例如:

$ cd <tab> # becomes
$ cd .Trash

当然,即使那样你也必须阅读你正在执行的内容。

答案3

以下是我将当前目录和用户放入 Windows 标题中的方法 - 您可以根据需要进行调整,但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

这里的问题不是cd,也不是通过技术解决的。

问题出在你身上,耐心就能解决!

如果你发现自己经常输入和提交不想要的命令,练习放慢速度深呼吸,阅读你输入的内容,并在按下回车键之前仔细检查。仔细考虑。不要着急。

你会发现这种方法不仅可以解决当前的问题,而且还可以解决其他问题更严重的问题如果你继续沿着目前的道路前进,你将会遇到这些事情。

相关内容