O nome do pacote apt-get autocomplete está quebrado


71

Em algum momento

apt-get install

o preenchimento automático foi interrompido

Foi muito útil ver o nome dos pacotes com a Tabimprensa

Como reparar este preenchimento automático?


Edite sua pergunta para adicionar mais informações. O que faz agora quando você pressiona tab? Existe algum erro? Por favor inclua.
Oli

Qual pacote você estava tentando encontrar? Está disponível através da pesquisa apt-cache mypkg Estou usando o Kubuntu no Oneiric e vejo-o funcionando bem.
precisa saber é o seguinte

Por exemplo, eu pressionar guia depois sudo apt-get install ruby, e do terminal exibir-me todos os pacotes com Ruby: ruby-mysql, ryby-dev, etc.
Вячеслав Логинов

Sim, e o que você vê ao pressionar tab?
Oli

Vejo a lista de pastas, como cd + [TAB]
Вячеслав Логинов

Respostas:


105

Conforme indicado nos comentários da outra resposta, primeiro verifique se bash-completionestá instalado:

sudo apt-get install bash-completion

e aparentemente para @diapir, ajudou a reinstalá-lo:

sudo apt-get install --reinstall bash-completion

No entanto, para mim, o problema não era que a conclusão do bash não estava instalada ou quebrada, o problema foi que eu excluí meu .bashrcarquivo acidentalmente . Você pode obter um novo copiando-o de /etc/skel:

cp /etc/skel/.bashrc ~/

2
Obrigado, a dica do bashrc também resolveu o problema. O uso de sudono chmodcomando é desnecessário, certo?
BHSPitMonkey

2
o arquivo localizado na /etc/é 0644/-rw-r--r--com o usuário: group = root:root, e quando copiado para sua pasta de usuário, irá automaticamente para o usuário: user
kevinf

cp /etc/skel/.bashrc ~ / me ajudou a resolver esse problema.
Jacob Abraham

Reinstalar e copiar /etc/skel/.bashrc me ajudou, obrigado!
Sergey

36

Digite o seguinte comando:

sudo -H gedit /etc/bash.bashrc

Procure estas linhas:

# 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

Remova o comentário de algumas linhas, para que fique assim:

# 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

Salve, feche o terminal e abra-o novamente.

Eu tenho esse problema após a instalação do 13.04, e é assim que eu o resolvo.


essa foi a única coisa que funcionou para mim. obrigado.
fevereiro de 2015

Trabalhou para mim em Elementar OS Loki
Rodrigo Lopez Guerra

4

Faça o download da versão estável mais recente em http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

inserir

if [ -f /etc/bash_completion ]; then
  . /etc/bash_completion
fi

para ~ / .bashrc


bash-completionestá nos pacotes - existe algum motivo para você fazer isso manualmente? O pacote deve fazer exatamente isso:) #
Cesium

:) como sempre, sentado, lendo manuais, configurar e, em seguida, verifica-se que este suave é existir no repositório
Вячеслав Логинов

3
sudo apt-get install --reinstall bash-completionfez isso por mim.
Diapir #

2
@diapir, tenho o mesmo problema, mas apenas reinstalar não está funcionando. Eu tenho que aplicar as linhas no bashrcarquivo.
Anwar

0

Observe que a saída deste comando:

apt-config dump | grep "Dir::Cache"

Deve ser algo como isto:

Dir::Cache "var/cache/apt";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";

Se o valor de Dir::Cache::pkgcacheestiver vazio, o apt não poderá concluir automaticamente os nomes dos pacotes. Dê uma olhada nos seus /etc/apt/apt.conf.d/arquivos e procure por essa chave para garantir que ela não esteja definida como string vazia.

grep -r pkgcache /etc/apt/apt.conf.d/

Veja também esta resposta .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.