如果目前目錄為空,則進入子目錄

如果目前目錄為空,則進入子目錄

有件事阻止我放棄 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  

非常感謝你們!

相關內容