如果当前目录为空,则进入子目录

如果当前目录为空,则进入子目录

有件事阻止我放弃 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 预安装的软件包造成的。解决此行为的步骤是:

  1. 删除我的.bashrc文件中出现的以下代码列表,即 $HOME/.bashrc、$HOME/.profile、/etc/bash.bashrc 和 /etc/profile。
  2. 删除软件包,通过apt remove bash-completion它将删除以下文件Debian 软件包 - 列出文件
  3. 获取编辑后的 ​​.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  

非常感谢你们!

相关内容