De quantas maneiras posso obter Bash alias de conclusão parcial de subseqüência de caracteres?
-
21-08-2019 - |
Pergunta
Pergunta: Eu tenho uma pergunta que é aparentemente não respondidas por este já pediu Bash conclusão pergunta no Estouro de Pilha.A questão é, como obter Bash alias conclusão (para qualquer alias) em uma subseqüência parcial.
Exemplo: Por exemplo, suponha que tem as seguintes abreviaturas:
open.alicehome="cd /usr/home/alice"
open.bakerhome="cd /usr/home/baker"
open.charliehome="cd /usr/home/charlie"
gohomenow="shutdown -now"
Eu gostaria de preguiçosamente basta digitar "baker{{GUIA}}" para invocar o segundo alias.
Eu gostaria de preguiçosamente basta digitar "casa{{GUIA}}" para obter uma lista de todos os acima aliases que eu possa escolher, com o teclado (ideal) ou optar por escrever uma inequívoca subseqüência de caracteres que distingue entre as três opções (menos do que o ideal).
..OU ..
Eu gostaria de preguiçosamente basta digitar "home" e, em seguida, prima repetidamente a tecla {{GUIA}} até que o específico alias eu quero mostra-se, em seguida, prima {{ENTER}} para executá-lo.
Sinta-se livre para ser criativo: Se você tem uma maneira de fazer isso, mesmo se necessita de recorrer a extrema guru hackery, por favor, sinta-se livre para compartilhá-lo e sinta-se livre para explicar o seu guru hackery ao nível de uma criança de cinco anos que vai ter que tentar implementar a sua ideia para si mesmo.
Links existentes páginas web ou RTFMs são bem-vindos.
Solução
Você pode gerar as correspondências para um determinado subseqüência de caracteres com compgen -c -X'!*substring*'
Para incluir isso no bash preenchimento automático você pode criar um .bash_completion arquivo em seu diretório home contém algo como isto:
_comp() {
local cur
cur=${COMP_WORDS[$COMP_CWORD]}
COMPREPLY=( $( compgen -c -X '!*'$cur'*' ) )
}
complete -F _comp $nospace eval
Correspondem a esta função será executada quando você pressionar <TAB>
os argumentos para o eval
de comando.Ainda não encontrei uma forma de incluir uma nova função correspondente para a primeira pesquisa de comandos em bash, eu só encontrada documentação sobre como adicionar personalizado conclusões para um comando específico, como eval
acima.
Mas sou um pouco cético quanto à utilidade que este é...Não há nenhuma maneira fácil para seleccionar qual a correspondência que você deseja a partir da lista.
Outras dicas
Se você realmente quer mudar bash
's guia de comportamento,
# ~/.inputrc
# The default binding for [Tab] is ``complete'', which is what we're used to.
# ``menu-complete'' gives you irssi-like behavior: cycle through completions.
"\t": menu-complete
Isto está documentado no O GNU Readline Biblioteca # Deixar Readline Tipo Para Você.
Provavelmente, você pode conseguir o que você quer com o costume bash_completion definições, mas eu não vou fazer o trabalho para você, ok?:-)
Se você não sabe do que estou falando, veja aqui e aqui para obter detalhes.A propósito, eu acharia muito chato isso
Eu gostaria de preguiçosamente basta digitar "home" e, em seguida, prima repetidamente. {{GUIA}} até que o específico alias eu deseja mostra-se, em seguida, prima {{ENTER}} para executá-lo.
o que eu acho é que a M$ estilo de "conclusão" (você está vindo para DOS/windows ambiente?)