É possível no bash completar o meio de uma palavra?

0

Eu tenho um script simples de conclusão do bash para o meu pesquisador de ramificação do git personalizado.

#/usr/bin/env bash
_branch_completions()
{
  local word="${COMP_WORDS[COMP_CWORD]}";
  if [ ! -z "$word" ]
  then
    COMPREPLY=($(compgen -W "'git branch | grep $word'" "${COMP_WORDS[1]}"))
  fi
}

complete -F _branch_completions branch

O script "branch" pesquisa dentro das filiais para que eu possa pesquisar

branch 5.9

e eu vou pegar

1 release/5.9.0
2 hotfix/5.9.1
3 hotfix/5.9.2
Please select a branch

Meu script de conclusão do bash completará a aba da aba de ramificação aba e me dê release / 5.9.0 mas eu gostaria de poder fazer o branch 5.9 tab tab e pegar todos eles

    
por dstarh 20.04.2018 / 04:07

1 resposta

3

Na página do bash man :

compgen [option] [word]
...
    If word is specified, only those completions matching word will be displayed.

Você já está filtrando a lista com o grep, então, para obter o comportamento desejado, você pode simplesmente omitir o segundo argumento para o compgen, fazendo sua linha:

COMPREPLY=($(compgen -W "'git branch | grep $word'"))
    
por 05.06.2018 / 14:53