Bashでコマンドオプション名を自動補完する方法はありますか?

Bashでコマンドオプション名を自動補完する方法はありますか?

バッシュ4.4を使用しています。

[root@192 ~]# bash --version
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@192 ~]#

オプション名を自動補完する方法があるかどうか疑問に思います。たとえば、realpath --re後ろにaを入力すると、Tabオプション名の欠落部分を埋めるのに役立ちますrealpath --relative-to=

ベストアンサー1

bash-completionを有効にした場合は、コマンドを完了するためのコマンドオプションがすでにあります。同様の場所で、この目的のために多くのスクリプトと関数を見ることができます/usr/share/bash-completion。インストールされたパッケージはgitスクリプトを/etc/bash_completion.d/

完了が制限されているいくつかのスクリプト(realpathまたは)がまだ存在する可能性があります。を使用する必要があるecho長いオプションの完成を追加するには、これは完成を生成するbash関数で、を使用して表示できます。realpath_longopttype -a

complete -F _longopt realpath

これを行う前に、次の操作で変更したいことが完了したかどうかをテストする必要があります。

complete -p realpath

no completion specificationこれを既存のルールと呼ぶことができますcomplete -F _minimal realpath。たとえば、新しいルールはそれを上書きします。したがって、多くのコマンドにどの機能(既存またはカスタマイズ)も盲目的に割り当ててはいけません。コマンド補完ルールがすでに存在します。

この変更は現在のシェルに適用されます。永久に作成するには、たとえばを渡してsourceこれを行う必要がありますbashrc

おすすめ記事