パスのみの Bash 補完

パスのみの Bash 補完

ファイルシステム パス以外のすべてに対して bash 補完を無効にするにはどうすればよいでしょうか?

しかし、パスの場合でも、何も解釈したくありません。

たとえば、次のようにします。

# sh -f fo<tab>

そして、foo.txt というファイルがあると、このファイルは機能しませんが、foo.sh というファイルであれば機能します。ここで bash が私を「助けよう」としているのだと思います。私は長い間 Linux を使っていますが、bash の補完機能に、私が考えていることを知っていると仮定するようなことはしてほしくありません。zip ファイルを調べたり、ホスト名を推測したりしてほしくありません。単純なパス名の補完だけが欲しいのです。

答え1

bashにはcomplete、現在のシェルの自動補完動作を制御する組み込みコマンドがあります。ディストリビューションまたはシステム管理者が、これらのcompleteコマンドを設定されたスタートアップ ファイル (従来は、、、、、、) に配置/etc/profileすることで、対話型シェルを設定するように設定している可能性があります。/etc/bash.bashrc~/bash_profile~/bash_login~/.profile~/.bashrc

この機能を永続的に無効にするには、これらのファイルを編集して、これらのコマンドを呼び出さないようにcomplete(または必要なコマンドだけを呼び出すように)します。

対話型セッションの1つのインスタンスのみ「インテリジェント」オートコンプリートを無効にするには、次のコマンドを実行します。

complete -r

そのセッションで。

関連情報