「full -G」を正しく使う方法は? [コピー]

「full -G」を正しく使う方法は? [コピー]

私は私の問題を説明するために考えることができる最も簡単なコードを生成しました。

「.cc」で終わるファイルを処理するために「foo」コマンドを使用するとします。

complete -G '*.cc' foo

今、私の現在のディレクトリに「foo.cc」、「bar.cc」、「blah.cc」が含まれているとしましょう。 「foo」と入力して Tab キーを押すと、次のような結果が表示されます。

$ foo <tab><tab>
bar.cc   blah.cc  foo.cc   
$ foo 

これが私が期待していたものです。しかし、最初の文字「b」を入力して再試行すると、次のようになります。

$ foo b<tab><tab>
bar.cc   blah.cc  foo.cc
$ foo b

-Wのように「b」で始まる結果でフィルタリングしません。

私が見つけることができるすべてを検索しましたが、complete -G私の要件に合った例が見つかりませんでした。これが一般的なものだと確信しています。ここでベストプラクティスは何ですか?

答え1

わかりました、答えを見つけました。bashの完了にパターンを追加する方法(圧縮解除用)は何ですか?

要約:「-G」はほとんど役に立ちません。最善の方法は、「-f」を使用してすべてのファイルを一致させ、次に-X '!*.cc'を使用して不要なファイルを除外することです。次に、良い結果を得るには、「-o plusdirs」を追加します。

関連情報