コマンドラインツールにはどのように独自のオートコンプリートリストがありますか?


24

UbuntuのBashは、ツールの特定のアクションリストをどのように認識しますか?

たとえば、apt-getとtabを2回入力すると、削除、更新、アップグレードなどのみが表示されますが、別のコマンドのアクションや現在のディレクトリ内のファイルは表示されません。

Goでコマンドラインツールを開発していますが、この機能をサポートするディストリビューションにこの機能を提供したいと考えています。


1
タイトルとタグから「ubuntu」を削除しました。これはより一般的な質問の方が良いためです(答えはディストリビューションに固有のものではありません)。
goldilocks 14

1
すばらしい質問です。私はよくこれを疑問に思っていましたが、調べるのに時間がかかりませんでした。
アカタクリトス

回答:


25

これは、bash v4の補完機能を使用して行われます。の完了コードapt-getbash-completionパッケージによって提供され、にあります/usr/share/bash-completion/completions/apt-get。完了があり、基本bash-completionパッケージの一部ではないアプリケーションは、完了スクリプトをに配置し/etc/bash_completion.dます。

補完はsourcingによってロードされ/etc/bash_completionます。これが行われる正確な場所は、DebianまたはUbuntuのバージョンによって異なります。それは順番に内のすべてを供給します/usr/share/bash-completion/completions/etc/bash_completion.d


ありがとう、それはそれを説明します。それでは、実装はDebianからUbuntuだけでなく、同じディストリビューションの各バージョンでも異なるのでしょうか?
修正されたRustom 14

1
@Amgadすべてのディストリビューションで同じように機能します。唯一の違いは、ファイルの場所と、おそらくいくつかのデフォルト設定です。
ジル 'SO-悪であるのをやめる' 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.