como expandir aliases inline no bash?

75

Existe uma maneira de expandir aliases inline no bash?

$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l 
    
por asdfg 19.02.2011 / 10:43

4 respostas

93

Você pode pressionar Ctrl - Alt - e para executar a função readline shell-expand-line , que fará alias, histórico e expansões de palavras. Note que em alguns teclados Meta não é Alt . Você pode precisar pressionar Esc e então Ctrl - e

As funções alias-expand-line e history-and-alias-expand-line não estão vinculadas por padrão, mas você pode vinculá-las adicionando linhas semelhantes às seguintes ao arquivo ~/.inputrc .

"\e\C-l": alias-expand-line

que faria com que o Ctrl - Alt - l (minúscula "ell") executasse a expansão de alias apenas .

    
por 19.02.2011 / 11:52
3

Isso pode ser uma maneira muito mais simples de fazer o que você está tentando ( bash version > = 4.2.29):

shopt -s direxpand
shopt -s expand_aliases

shopt ' man page: link

    
por 14.06.2016 / 15:35
0

Isso não funciona. Mas eu estou supondo / esperando que algo assim possa ser feito para fazer o que você quer fazer. Você teria que usar seu próprio script de conclusão. É assim que você faz 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 ( link ) e coloque o script mencionado acima em um arquivo dentro do diretório bash_completion.d que o script você obter das referências de url. Deixe-me saber se não funciona.

Obrigado.

    
por 19.02.2011 / 11:09
0

Para as pessoas que têm o zsh instalado à procura de uma solução simples, as globalias podem seja seu amigo

Expands all glob expressions, subcommands and aliases (including global).

# .zsrc:
alias S="sudo systemctl"

$ S<space>
# expands to:
$ sudo systemctl

para instalar basta adicionar "globalias" à sua lista de plug-ins .zshrc

plugins=(... globalias)

Then just press SPACE to trigger the expansion of a command you've written.

If you only want to insert a space without expanding the command line, press CTRL+SPACE

    
por 31.08.2018 / 20:10