auto-conclusão não funciona para "sudo apt-get install" [duplicado]

33

Ok, uma faculdade minha acabou de me mostrar que você poderia fazer

sudo apt-get install <type first letters of package> <TAB>

Que conclui automaticamente o nome do pacote. Apenas por um exemplo ...

sudo apt-get install ged<TAB> resulta em sudo apt-get install gedit

Agora tentei fazer isso, mas isso não funciona para mim.

Como posso resolver isso? Eu tenho que instalar um pacote? Minha faculdade me disse que ele não instalou nada extra para isso.

    
por WG- 30.10.2012 / 21:26

7 respostas

41

O Bash suporta mais alguns tipos de autocompletar, não apenas a conclusão do nome do arquivo.

No arquivo /etc/bash.bashrc, você encontrará um parágrafo como este ou semelhante a este:

# enable bash completion in interactive shells
#if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
#fi

(este exemplo é do debian, mas é provavelmente idêntico à versão do Ubuntu)

Ao remover o caractere # no início de cada linha, você aplica muitas regras adicionais de conclusão. (Não remova o # na primeira linha ... isso é realmente um comentário; -)

Acredito que as conclusões do apt-get estão entre as habilitadas com isso. Se não, você poderia pensar em mudar para o zsh. Eu sei que eles apoiam isso; -)

    
por Paul Hänsch 31.10.2012 / 03:24
22

Descobri que isso acontecia porque bash-completion não estava instalado por algum motivo. Então isso resolveu isso (12.04):

sudo apt-get install bash-completion
    
por d_inevitable 11.08.2013 / 19:29
8

Eu tive o mesmo problema depois de instalar o Ubuntu 15.10.
Reinstalando bash-completion funcionou para mim:

sudo apt-get install --reinstall bash-completion
    
por hg8 23.10.2015 / 09:49
3

No Ubuntu ele começou a me irritar também, então eu acabei de fazer (no terminal):

gksu gedit /etc/bash.bashrc

e alterado

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

em

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

agora funciona como eu quero de novo ... HTH:)

É diferente do exemplo dado por Paul Hänsch, o meu veio do Ubuntu 12.04. Eu não tenho certeza do que a versão de Pauls faria exatamente, talvez ele pudesse elaborar isso um pouco?

    
por Ashrael 29.01.2013 / 14:29
1

Outro problema pode ser um apt-get update com falha. Depois de remover as fontes erradas e executar apt-get update , restaurei meu preenchimento automático.

    
por Tamás Barta 02.07.2013 / 14:37
1

Abra um terminal e

sudo apt-get install bash-completion

Depois que eu instalei o bash-completion, esse problema está resolvido do meu lado.

    
por Grace Zhan 23.10.2015 / 05:35
0

isso acontece comigo quando:

  1. Eu uso meu computador da universidade, no qual não posso usar o preenchimento automático, porque não sou um superusuário.

  2. O ppa do pacote que você está tentando baixar não está no seu source.list . Então o terminal não pode reconhecer o pacote que você está tentando baixar.

NOTA: Isso pode não se aplicar a todos. Estou apenas compartilhando minha experiência

    
por Suhaib 08.11.2012 / 23:53