現在のディレクトリが空の場合はサブディレクトリを入力してください

現在のディレクトリが空の場合はサブディレクトリを入力してください

GUI ファイル マネージャーを bash 用に捨てられない理由が 1 つあります。それは、bash が空のディレクトリ内の唯一のサブディレクトリまでタブ補完を実行しないことです。

$ ls
..       // is not displayed, when cmd is simply ls
.        // but they still exist
subdir/

現在のディレクトリには他に何もないので、展開できるようにしたいのですが、bash ではこのコマンドを完了するために最初の文字を入力する必要がありcd <tab> ます。cd subdir/

使用事例 ネストされたディレクトリ (特に不明なディレクトリ) を持つプロジェクトをナビゲートするのは非常に困難です。/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

私の問題に対する迅速なコメントをありがとうございました。プログラム可能なシェル スクリプトのシェル スクリプトを無効にすることで、問題は解決しました。

これは、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  

本当にありがとうございました!

関連情報