Bashでの大文字と小文字を区別しないタブ補完


142

Bashタブを大文字と小文字を区別せずに完了する方法はありますか?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

Mac OS X 10.6を使用しています

回答:


170

テキストを更新し/etc/inputrcて含める

completion-ignore-caseをオンに設定します

次に、を使用^X ^Rして構成を再読み込みします。


30
「同様に」- /etc/inputrcまたは~/.inputrcまたはで指定されたファイルINPUTRCが唯一の場所です。Bashプロンプトでそれを入力しても機能しません。
デニスウィリアムソン

おっと!あなたは正しいです:)
ジョンT

10
^X ^R再読み込みするにはinputrc
荒廃

14
@DennisWilliamson:bind "set completion-ignore-case on"コマンドラインから実行できます。なぜなら、そのターミナルセッションのみ
クレイブリッジズ

1
これ msysgitにはあるが、MSYS2にはないものです!ここで、たとえば/ etc / profileで見つけようとしました
...-SamB

111

後知恵を活用して再構築し、[.]inputrcvsと.bash_profile。彼の助けのため
アンダースコア_dに帽子の先端。

注: Bashのコマンドライン編集は、Readlineライブラリによって提供されます。それをカスタマイズするのは簡単ではありませんが、学ぶ価値は十分にあります。その機能には、定義済みのテキストスニペットを挿入するためのカスタムキーボードショートカットを定義する機能が含まれます-Bashリファレンスマニュアルのコマンドライン編集参照してください

しつこくバッシュでタブ補完の大文字と小文字を区別しないを行います。


オプションA:既にお持ちの場合:

  • /etc/inputrcファイル(システム全体に適用、変更が必要ですsudo
  • および/または~/.inputrcファイル(ユーザー固有)

    および/または

readlineライブラリを大幅にカスタマイズすることを計画している、および/またはスクリプトが呼び出すときにもカスタマイズを効果的にしたい場合read -e

行を追加

set completion-ignore-case on

いずれかにあなたが設定をするために有効であることがしたいかに応じて、ファイルのすべてのユーザーまたは現在のユーザー(必要な場合は、ファイルを作成します)。

ファイル名とディレクトリ名の補完を簡単にする関連コマンドは次のとおりです。

set show-all-if-ambiguous on

これにより、複数の一致がある場合にTabキーを2回押す必要がなくなります。


オプションB:または、Readlineコマンドを~/.bash_profileOS X(または~/.bashrcLinux)のユーザー固有のファイルに追加するには、それらを組み込み引数に単一の引数として渡します。bind

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

bindのコマンドは、~/.bash_profile/ ~/.bashrcのいずれかの同等のコマンドよりも優先されます/etc/inputrc~/.inputrc

上記のように、この方法で定義されたReadline構成は、ユーザー入力を読み取るためのReadlineサポートをアクティブにするために呼び出すスクリプトでは有効になりませんread -e


10
show-all-if-ambiguousはとても素晴らしいです!なぜ彼らがそのアクションを実行するために2度Tabキーを押したのか疑問に思いました。私の将来は何千ものキーストロークが節約されました!ありがとう!
user34112

4
素晴らしい、それはcdコマンドに対しても機能します。これはこの疑問を解決し何千ものキーストロークを節約します。:)
hoosierEE 14年

1
素晴らしい点再show-all-if-ambiguous。しかし、あなたが「代替として」と言うのでbindinputrcファイルがそれを不必要にすると思われる場合、実際にを介してこれを行うことに利点はありますか?
underscore_d

1
@underscore_d:いい質問です。更新された回答をご覧ください。
mklement0

1
クール、ありがとう!Debian 8.2 inputrcでは、どちらもありませんでしたが、幸いにも~/.inputrc、これらに加えて、他の本当に便利なディレクティブを作成して追加しました。すべての読者/etc/inputrc が他のユーザーに影響することを知っていると仮定していると思います(後者が影響を受ける設定をオーバーライドしない限り)。警告に言及している間;)
underscore_d

1

すべてのユーザーの構成の変更を回避し、ルート権限を回避するには、次を使用します。

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

次に、再ログインするか、〜/ .inputrcをリロードします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.