考慮する:
$ ssh fo<tab>
foo fool football
これらの値を繰り返すには、forループをどのように書く必要がありますか?
#!/usr/bin/env bash
for SERVER in $(ssh fo<MAGIC HERE>) ; do echo $SERVER ; done
リストは定期的に変更される可能性があるため、値をハードコーディングすることはオプションではありません。 SSH の特定のケースでは、ホストの SSH 構成ファイルと一致するように grep できることがわかります。ただし、次のような他の完了状況が発生します。
$ git che<tab>
checkout cherry cherry-pick
答えは、これらの他の一時的な完了にも役立ちます。
答え1
キャンプゲン以下のように1単語しか使用できません。
compgen -c git
お客様のケースに合ったカスタムソリューションは次のとおりです。
まず、bash-completionスクリプトを入手してから設定する必要があります。比較する_bash_completion
* varsはこのユースケースを満たし、プログラムで基本関数の完了をトリガーします。機能COMPREPLY
その後、結果は配列として収集されます(たとえば、次から取得されます)。ここ):
# load bash-completion helper functions
source /usr/share/bash-completion/bash_completion
# array of words in command line
COMP_WORDS=(git c)
# index of the word containing cursor position
COMP_CWORD=1
# command line
COMP_LINE='git c'
# index of cursor position
COMP_POINT=${#COMP_LINE}
# execute completion function
_xfunc git _git
# print completions to stdout
printf '%s\n' "${COMPREPLY[@]}"
PS:コマンドの完了時に呼び出される正確な関数を確認するには、次のようにします。complete -p <command>
出力:
checkout
cherry
cherry-pick
clean
clone
column
commit
config
credential
このコンテンツの完全な概要については、所有者の投稿をご覧ください。ここ