Quando uso o programa como svn
e digito no Gnome Terminal:
svn upd
e pressione Tabo preenchimento automático para:
svn update
É possível fazer algo assim no meu script personalizado do bash?
bash
auto-completion
UAdapter
fonte
fonte
Respostas:
Você pode usar a conclusão programável . Têm olhada
/etc/bash_completion
e/etc/bash_completion.d/*
para alguns exemplos.fonte
/usr/share/bash-completion/completions/<program>
The provided link has that already
- pode hoje, mas pode não amanhã. Ou no próximo ano. Ou em uma década. O que você sugerir sobre a documentação ainda ser relevante, o Stack Overflow desencoraja respostas somente de links por esses motivos.Estou com seis meses de atraso, mas estava procurando a mesma coisa e achei o seguinte:
Você precisará criar um novo arquivo:
Para um preenchimento automático estático (
--help
/--verbose
por exemplo), adicione este:COMP_WORDS
é uma matriz que contém todas as palavras individuais na linha de comando atual.COMP_CWORD
é um índice da palavra que contém a posição atual do cursor.COMPREPLY
é uma variável de matriz da qual o Bash lê as possíveis conclusões.E o
compgen
comando retorna a matriz de elementos--help
,--verbose
e--version
combinando a palavra atual"${cur}"
:Fonte: http://www.debian-administration.org/articles/316
fonte
-
e mostrá-las sem precisar digitar a palavra de destino, basta remover as linhasif [...] then
efi
./etc/bash_completion.d/
. Eu só vim aqui porque queria postar uma resposta em algum lugar, mas acontece que alguém estava três anos à frente o tempo todo :) Exemplo claro, conciso e completo, obrigado!Todas as conclusões do bash são armazenadas em
/etc/bash_completion.d/
. Portanto, se você estiver construindo um software com bash_completion, vale a pena fazer com que a instalação deb / make solte um arquivo com o nome do software nesse diretório. Aqui está um exemplo de script de conclusão do bash para Rsync:Provavelmente valeria a pena revisar um dos arquivos de conclusão do bash que mais se aproxima do seu programa. Um dos exemplos mais simples é o
rrdtool
arquivo.fonte
source ~/.local/mycrazycompletion
no seu~/.bashrc
pkg-c
onfig --variable = completionsdir bash-conclusão` e esse diretório é a recomendação dada pelas Perguntas frequentes sobre a conclusão do bash vinculadas acima.Aqui está um tutorial completo.
Vamos ter um exemplo de script chamado admin.sh, no qual você gostaria que o preenchimento automático funcionasse.
Observe a lista de opções. Chamar script com esta opção imprimirá todas as opções possíveis para esse script.
E aqui você tem o script de preenchimento automático:
Observe que o último argumento a ser concluído é o nome do script ao qual você deseja adicionar o preenchimento automático. Tudo que você precisa fazer é adicionar seu script de preenchimento automático ao bashrc como
ou copie-o para /etc/bash.completion.d
fonte
prev
variável? Você não parece usá-lo.-o nospace
opção faz?Se tudo o que você deseja é uma conclusão automática baseada em palavras simples (portanto, nenhuma conclusão de subcomando ou qualquer coisa), o
complete
comando tem uma-W
opção que faz a coisa certa.Por exemplo, tenho as seguintes linhas no meu
.bashrc
para completar automaticamente um programa chamado jupyter :Agora é
jupyter <TAB> <TAB>
preenchido automaticamente para mim.Os documentos em gnu.org são úteis.
Parece depender da
IFS
variável ser definida corretamente, mas isso não causou nenhum problema para mim.Para adicionar a conclusão do nome de arquivo e a conclusão padrão do BASH, use a
-o
opção:Para usar isso no zsh, adicione o seguinte código antes de executar o
complete
comando no seu~/.zshrc
:fonte
bash jupyter <TAB><TAB>
?