bash の makefile ターゲットの補完 質問する

bash の makefile ターゲットの補完 質問する

次のような単純な makefile があるとします。

hello:
   echo "hello world"

bye:
   echo "bye bye"

次に、bash で次のものを実行します。

h <タブ> にする

完了できるように

こんにちは

空のファイルを作成するなどの簡単な方法を見つけましたがhellobyeもっと何かを探しています洗練された

ベストアンサー1

これをあなたの~/.bash_プロファイルファイルまたは~/.bashrcファイル

complete -W "\`grep -oE '^[a-zA-Z0-9_.-]+:([^=]|$)' ?akefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make

これは、grepを使用して「Makefile」または「makefile」(?の大文字のワイルドカードに注意?akefile)というタイトルのMakefile内のターゲットを検索し、引数の自動補完方法を指定するために使用されるbashのコマンドにパイプしますcomplete-Wフラグは、コマンドへの入力がcomplete単語リストになることを示し、grepの結果を渡すことで実現され、sed望ましい順序に並べ替えられます。単語リストフォーマット。

注意点と落とし穴:

  1. メイクファイルの名前が「GNUMakefile」か、「Makefile」や「makefile」以外の名前になっています。このようなタイトルが頻繁に表示される場合は、正規表現を?akefile適宜変更することを検討してください。

  2. 変更を加えた後に ~/.bash_profile または ~/.bashrc ファイルをソースするのを忘れる。これは一見些細な詳細のように見えるが、初心者には馴染みのないことだ。bash ファイルへの変更を有効にするには、ソースコマンドを使用して

    source ~/.bashrc
    

    または

    source ~/.bash_profile
    

PS. また、表示機能も追加されました。可能bash 補完と同じように、[Tab] キーを 2 回押して make ターゲットを作成します。[Tab] キーを 2 回入力する前に、make コマンドの後に必ずスペースを入れてください。

おすすめ記事