Como usar corretamente “complete -G”? [duplicado]

2

Gerei o código mais simples que pude imaginar para ilustrar meu problema.

Suponha que eu queira que o comando "foo" trabalhe com arquivos que terminem com ".cc".

complete -G '*.cc' foo

Agora vamos supor que meu diretório atual contenha "foo.cc", "bar.cc" e "blah.cc". Se eu digitar "foo" e tab, eu recebo:

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

que eu esperava. Mas se eu digitar a primeira letra 'b' e tentar novamente:

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

Ele não filtrou os resultados para aqueles que começam com 'b' como seria para -W.

Eu pesquisei tudo o que pude encontrar e não encontrei um exemplo de complete -G que faz o que eu quero. Tenho certeza de que isso é algo bastante comum para se fazer; quais são as melhores práticas aqui?

    
por Edward Falk 23.06.2016 / 06:10

1 resposta

1

OK, eu encontrei a resposta em Como adicionar padrão ao término do bash (para descompactar)?

Resumo executivo: "-G" é praticamente inútil. A melhor maneira de fazer isso é usar "-f" que corresponde a todos os arquivos e, em seguida, -X '! *. Cc' para excluir os que eu não quero. E depois "add -o plusdirs" para uma boa medida.

    
por 24.06.2016 / 03:13