vin*_*aes 11 command-line cd-command
问题是有时我输入cd错误,然后将我带到主目录。
例如,我在一个包含隐藏目录和可见目录的目录中,我快速按cd+tab将我带到主目录
Win*_*nix 15
使用gedit ~/.bashrc并在底部插入这些行:
cd() {
[[ $# -eq 0 ]] && return
builtin cd "$@"
}
Run Code Online (Sandbox Code Playgroud)
打开一个新终端,现在当你输入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'
Run Code Online (Sandbox Code Playgroud)
完成此操作的扩展代码是:
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 "$@"
}
Run Code Online (Sandbox Code Playgroud)
如果是选项卡完成导致了这种情况,一种选择是立即通过条目进行完成循环。这可以使用readline 的menu-comple选项而不是默认值来完成complete:
bind 'tab: menu-completion'
Run Code Online (Sandbox Code Playgroud)
然后,在我的主目录中,例如:
$ cd <tab> # becomes
$ cd .Trash
Run Code Online (Sandbox Code Playgroud)
当然,即便如此,您也必须阅读您正在执行的内容。