
私が書いているより大きなオートコンプリート機能の一部としてcompgenを使用してファイルのリストを生成したいと思います。私はcompgen
bashのマニュアル項目を読んで、complete
そこでそのオプションが-G "*"
解決策になると思いました。しかし、動作させることはできません。入力内容が何であれ、現在のディレクトリのファイルのリストが表示されます。例:
$ cmd <Tab>
aa bb cc
$ cmd a<Tab>
aa bb cc
$ cmd aa<Tab>
aa bb cc
だから私はcompgenと同じオプションをサポートするを使ってデバッグしようとしましたが、complete
同じ結果を得ました。
$ complete -G "*" cmd
$ cmd a<Tab>
aa bb cc
私もやってみましたが、complete -o filenames
それもできませんでした。
答え1
自分で答えを見つけました。私は次のオプションを使用する必要がありました-A action
:
compgen -o filenames -A file ...
complete -o filenames -A file
答え2
あるいは、ファイル名にデフォルトのオートコンプリートを使用することもできます。
# at the top of the function to disable default
compopt +o default
# and where you need filename completion, re-enable it and send empty COMPREPLY
compopt -o default
COMPREPLY=()
return 0