次のような単純な makefile があるとします。
hello:
echo "hello world"
bye:
echo "bye bye"
次に、bash で次のものを実行します。
h <タブ> にする
完了できるように
こんにちは
空のファイルを作成するなどの簡単な方法を見つけましたがhello
、bye
もっと何かを探しています洗練された。
ベストアンサー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
望ましい順序に並べ替えられます。単語リストフォーマット。
注意点と落とし穴:
メイクファイルの名前が「GNUMakefile」か、「Makefile」や「makefile」以外の名前になっています。このようなタイトルが頻繁に表示される場合は、正規表現を
?akefile
適宜変更することを検討してください。変更を加えた後に ~/.bash_profile または ~/.bashrc ファイルをソースするのを忘れる。これは一見些細な詳細のように見えるが、初心者には馴染みのないことだ。bash ファイルへの変更を有効にするには、ソースコマンドを使用して
source ~/.bashrc
または
source ~/.bash_profile
PS. また、表示機能も追加されました。可能bash 補完と同じように、[Tab] キーを 2 回押して make ターゲットを作成します。[Tab] キーを 2 回入力する前に、make コマンドの後に必ずスペースを入れてください。