有件事阻止我放弃 bash 的 GUI 文件管理器:Bash 不会对空目录中的唯一子目录进行制表符补全。
$ ls
.. // is not displayed, when cmd is simply ls
. // but they still exist
subdir/
我希望能够扩展cd <tab>
到,cd subdir/
因为当前目录中没有其他内容,但 bash 需要输入第一个字母才能完成此命令。
使用案例
使用嵌套目录(尤其是未知的目录)导航项目非常痛苦。 /src/main/com/application/module/package 翻译为:
s<tab><tab><tab>m<tab><tab><tab>c<tab><tab><tab>a<tab>...
其中,例如 thunar,第一个目录是预先选择的,所以我可以多次按 Enter。
我想这是由于当前目录和父目录的标识符所致。在 bash 中构建这种行为的正确方法是什么?
//编辑_2:
我在 Debian 10 上使用 xfce4-terminal
答案1
感谢大家对我的问题的快速评论。禁用可编程 shell 脚本的 shell 脚本解决了我的问题。
这是由于 Debian 预安装的软件包造成的。解决此行为的步骤是:
- 删除我的
.bashrc
文件中出现的以下代码列表,即 $HOME/.bashrc、$HOME/.profile、/etc/bash.bashrc 和 /etc/profile。 - 删除软件包,通过
apt remove bash-completion
它将删除以下文件Debian 软件包 - 列出文件 - 获取编辑后的 .bashrc / 重新启动 bash。
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
非常感谢你们!