有件事阻止我放棄 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
非常感謝你們!