コマンドラインツールはどのように独自のオートコンプリートリストを持つことができますか?

コマンドラインツールはどのように独自のオートコンプリートリストを持つことができますか?

UbuntuのBashは、ツールの特定のタスクのリストをどのように知ることができますか?

たとえば、私が入力した場合適切タブをダブルクリックすると、削除、更新、アップグレードなどが表示され、現在のディレクトリ内のファイルに対する他のコマンドや操作は表示されません。

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

答え1

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

完成したコンテンツはソーシングを通じて読み込まれます/etc/bash_completion。正確な実行場所はDebianまたはUbuntuのバージョンによって異なります。これは順番にソース/usr/share/bash-completion/completions/etc/bash_completion.d

関連情報