ページが見つからないようですman complete
。したがって、人々がコマンド全体complete --help
のオプションを説明するのに役立つことを願っています。
complete: complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]
Specify how arguments are to be completed by Readline.
For each NAME, specify how arguments are to be completed. If no options
are supplied, existing completion specifications are printed in a way that
allows them to be reused as input.
Options:
-p print existing completion specifications in a reusable format
-r remove a completion specification for each NAME, or, if no
NAMEs are supplied, all completion specifications
-D apply the completions and actions as the default for commands
without any specific completion defined
-E apply the completions and actions to "empty" commands --
completion attempted on a blank line
When completion is attempted, the actions are applied in the order the
uppercase-letter options are listed above. The -D option takes
precedence over -E.
bash
オプション1でスクリプトコマンドを実行してから(理想的には適切な場合)、有効なファイルおよび/またはディレクトリを使用しようとします。これを使用できますかcomplete
?それとも別のアプローチが必要ですか?
今私はこれを持っています:
complete -W "mount unmount" phone
...というスクリプトの場合phone
。
ベストアンサー1
あなたの要求に従って「フルコマンドのオプション説明ヘルプ」:
すべての詳細を説明するにはストーリーが長くなるので、この記事の最後の部分で役に立つと予想される参考資料のリストを見つけてください。
$1
コマンドとファイルで実行される特定のユースケースに関して、次のセクション$2
に小さな例を追加しました。
はい
完成関数の作成位置差の処理:
# completion function to differentiate type of completion by argument type
_complete_phone () {
case ${#COMP_WORDS[@]} in
1) # 1st position is the `phone` command itself
return;;
2) # 2nd position are sub-commands, so we use `-W` for word completion
words="mount unmount"
COMPREPLY=($(compgen -W "$words" -- "${COMP_WORDS[COMP_CWORD]}"))
;;
*) # other arguments filter files, either
# any files using option `-f`
#COMPREPLY=($(compgen -f -- "${COMP_WORDS[COMP_CWORD]}"))
# and for specific files (i.e. pattern `*.phone`), use words again
COMPREPLY=($(compgen -W "$(ls *.phone 2>/dev/null)" -- "${COMP_WORDS[COMP_CWORD]}"))
;;
esac
}
それから関数による完成の有効化パラメータを有効にして-F
完成関数名を使用してください。
# complete using your function
complete -F _complete_phone phone
最後に、次のことを試してください(再現性のために任意のphone
プログラムと「関連」ファイルを作成する必要があります)。
# try
phone () { echo "hello, phone program will $@"; }
touch {my,your}.phone
phone m\tab \tab \tab
文書
バッシュリファレンスマニュアル
情報が必要なときbash
。
特に bash の完了については、該当する章を参照してください。
- 8.4バインド可能なリードラインコマンド
- 8.7 組み込み機能のプログラム可能な完成
- 8.8 プログラム可能な完成例
源泉:www.gnu.org
バッシュマニュアル
実行しman bash
てセクションに移動します。
READLINE
Readline Variables
set
完了関連変数の処理方法について説明します。たとえば、set completion-ignore-case on
「大文字と小文字を区別せずにファイル名の一致と完成を実行します」です。Completing
基本bash完成。Programmable Completion
完了したプロセスとメソッドcompgen
、変数など、上記の例で見つかった関連要素を説明してください。COMP_WORDS
SHELL BUILTIN COMMANDS
compgen
完成一致を生成します。complete
実行方法を指定します。-W
、など-F
のすべてのオプションも説明されています-o
。compopt
追加完了オプションを設定します。
ソース:GNU bash、バージョン5.1.16(1)-リリース(x86_64-pc-linux-gnu)