Estou procurando obter o preenchimento de guias nos meus aliases de linha de comando, por exemplo, digamos que defini o seguinte alias:
alias apt-inst='sudo aptitude install'
Existe uma maneira de obter as conclusões fornecidas pelo aptitude quando eu pressiono a tecla tab? ou seja, quando eu escrevo 'sudo aptitude install gnumer' e clico em tab, o aptitude conclui isso em gnumeric, ou se houver incerteza, liste todos os pacotes disponíveis começando com gnumer. Se eu fizer isso usando meu apelido, nada - nenhuma conclusão.
bash
alias
autocomplete
leve
fonte
fonte
Respostas:
Há um ótimo tópico sobre isso nos fóruns do Ubuntu . Ole J propõe a seguinte função de definição de conclusão de alias:
Use-o para definir uma função de conclusão para o seu alias e especifique essa função como um complemento para o alias:
Prefiro usar aliases para adicionar argumentos sempre usados aos programas existentes. Por exemplo, com
grep
, eu sempre quero pular dispositivos e arquivos binários, então eu faço um alias paragrep
. Para adicionar novos comandos, comogrepbin
, eu uso um script de shell na minha~/bin
pasta. Se essa pasta estiver no seu caminho, ela será preenchida automaticamente.fonte
complete -o default -F ...
vez decomplete -F ...
fazer com que coisas como a conclusão automática de nome de arquivo funcionassem corretamente ao passar argumentos (Bash 4.3.46).Tente o alias completo , que resolve esse problema exatamente.
Após a instalação, você pode usar uma função genérica para concluir vários aliases como este:
Você pode originar o arquivo complete_alias em todas as instâncias do bash
.bash_profile
ou através dele .instalação
inscrição
container
agora pode ser preenchido automaticamente pelo_docker()
manipulador de conclusão original ;fonte
2018 resposta
Você deve adicionar seu alias ao programa 'complete'. Dependendo do tipo de preenchimento automático que você deseja obter, você deve usar -c ou -F.
Para preenchimento automático de pacote:
Para preenchimento automático de comando:
Para verificar se o seu alias foi adicionado corretamente:
Por fim, para remover um alias de 'complete':
No seu caso:
fonte
complete -F xxx
não funciona no OSX (apenas mostra o usocomplete: usage: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]
). Você tem algum ponteiro? Obrigado.Aqui está o código da resposta de Shawn J. Goff com algumas melhorias:
shell-check
, por exemplo, o primeiro"
de"$@"
fato terminou a sequência de definição de função.return 0
para que o valor de retorno da função subjacente possa ser passado de volta ao chamador..
fonte
COMP_WORDS
matriz. Se usarmosmake-completion-wrapper _apt_get _apt_get_install apt-get install
como exemplo, aftershift 2
,$@
containsapt-get install
. A definição da função incluiapt-get install
(as duas palavras literais) ao atribuirCOMP_WORDS
.Como uma extensão da resposta do @Giles, a seguinte função de conveniência nomeia automaticamente o wrapper gerado
make-completion-wrapper
para tornar possível definir a conclusão em uma linha:fonte