Respostas:
Você pode pressionar Ctrl- Alt- epara executar a função readline, shell-expand-line
que fará o alias, histórico e expansões de palavras. Observe que em alguns teclados Metanão é Alt. Talvez seja necessário pressionar Escem seguida Ctrl-e
As funções alias-expand-line
e history-and-alias-expand-line
não são vinculadas por padrão, mas você pode vinculá-las adicionando linhas semelhantes à seguinte ao seu ~/.inputrc
arquivo.
"\e\C-l": alias-expand-line
o que faria Ctrl- Alt- l(minúsculas "ell") executar apenas a expansão de alias.
"\C-i": "\e\C-l\e\e"
o que cria uma macro que executa tanto alias-expand-line
e complete
. Depende da ligação da minha resposta acima e que a ligação padrão para o Esc-Esc permaneça em vigor. Você ainda poderá executar o Esc-Esc se quiser fazer a conclusão padrão.
ESC C-e
funciona para o Bash, mas C-x a
funciona para o Zsh. Também testado no OS X.
Control-x: history-and-alias-expand-line
.
Na verdade, isso pode ser uma maneira muito mais simples de fazer o que você está tentando ( bash
versão> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
's man
página: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
o shell interpretaria 'll' como comando / função 'll' que provavelmente não existe.
Isso não funciona. Mas estou supondo / esperando que algo assim possa ser feito para fazer o que você quer fazer. Você precisaria usar seu próprio script de conclusão. É assim que você cria um:
_ll()
{
COMPREPLY=(ls -l)
#The next line does not work. I just hope there were a way to replace that word
COMP_WORDS[COMP_CWORD-1]="ls -l"
}
complete -F _ll ll
Agora, crie o arquivo bash_completion completo ( http://caliban.org/bash ) e coloque o script mencionado acima em um arquivo dentro do diretório bash_completion.d ao qual o script que você obtém das referências de URL. Deixe-me saber se não funcionar.
Obrigado.
Para quem tem o zsh instalado procurando uma solução simples, globalias pode ser seu amigo
Expande todas as expressões, subcomandos e aliases globais (incluindo globais).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
para instalar basta adicionar "globalias" à sua lista de plugins .zshrc
plugins=(... globalias)
Em seguida, basta pressionar
SPACE
para ativar a expansão de um comando que você escreveu.Se você deseja inserir apenas um espaço sem expandir a linha de comando, pressione
CTRL+SPACE