Autocomplete em comandos .bash_aliases?

6

Eu tenho um monte de comandos com alias em .bash_aliases

Os exemplos mais genéricos são

alias apt-update="sudo apt-get update"  
alias apt-upgrade="sudo apt-get dist-upgrade"

mas também tenho

alias apt-install="sudo apt-get install "
alias a2avail="/etc/apache2/sites-available"

Os dois primeiros não são problema, Os dois segundos eu quero tornar o mais poderoso;

Especificamente para apt-install , quero que o autocomplete funcione.

para a2avail Eu quero poder digitar algo como sudo cp a2avail/default a2avail/new e executá-lo como sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/new

estas duas coisas são possíveis?

    
por Hailwood 12.08.2012 / 00:54

2 respostas

5

Adicionando o seguinte ao seu ~/.bashrc deve completar o nome do pacote para o seu alias do apt-install

_apt_install_complete() { 
    mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "");
}
complete -F _apt_install_complete apt-install

Quanto ao a2avail, um alias só funciona como a primeira palavra de um comando, mas você pode usar uma variável.

a2avail=/etc/apache2/sites-available   # in ~/.bashrc

# then...
sudo cp "$a2avail"/{default,new}
    
por geirha 12.08.2012 / 01:01
0

A partir de 4 de julho de 2017:

  1. Instale o completo-alias .

  2. Adicione esta linha: complete -F _complete_alias apt-install .

Você terminou.

    
por Cyker 04.07.2017 / 13:22