Essa pergunta é bem parecida com essa , mas não consigo entender a solução. Também conheço este tutorial , mas ainda não consigo entender o que estou fazendo de errado.
Estou tentando preencher automaticamente a lista de diretórios colocados em /something/
:
$ ls /something/
One Other Three
de uma maneira que isso vai acontecer:
$ hi [TAB]
One Other Three
$ hi O[TAB]
One Other
Somente quando a primeira palavra é hi
e não apenas dentro /something/
.
Isto é o que estou fazendo em .profile
:
_codeComplete()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen `ls /something/` -- $cur) )
}
complete -F _codeComplete "hi "
bash
filenames
autocomplete
Donovan
fonte
fonte
complete
comando se você ainda não o conhece e está procurandoautocomplete
outab-completion
... Este foi o primeiro local em que encontrei o nome do comando e o que eu precisava para corrigi-loeject
na atualização para o Ubuntu 14.04 ($ complete -p ls
->complete -F _longopt ls
, então a correção foi:complete -F _longopt eject
) (Aqui está esperando que este comentário ajuda os outros a encontrá-lo!)Deixe-me tentar melhorar a resposta aceita.
A resposta original falhará com nomes de arquivos que contenham espaços em branco. Após alguma investigação, percebo que você pode alterar o separador de entrada para final de linha:
tornando a função manipular espaços corretamente.
fonte
Aqui está uma versão que não apenas lida com os espaços, mas também os escapa:
(Com base nas respostas de dogbane e Eduardo Almeida dos Santos , mas com escape conforme fornecido pela antak no SO: /programming//a/11536437/1536933 )
fonte
fonte