O preenchimento automático do terminal não funciona corretamente

56

Se eu começar a digitar um comando como apt-gapós pressionar tab, o shell concluirá o comando para apt-get, mas para a segunda parte do comando install, como , se eu digitar alguns caracteres como insta, pressionar tab, não será concluído install.

Outro exemplo: depois que eu digito, sudobater tabnão conclui nada. por exemplo: sudo apt-ge[ tab] e nada.

Eu instalei o Ubuntu usando o mini iso (instalador de rede de 40 MB), então talvez haja uma configuração que eu perdi!

Adicionei este código ao meu, .bashrcmas ele ainda não funciona:

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

Eu também verifiquei a permissão .bashrce é -rw-r--r--.

Também forneço as .bashrcalterações posteriores usando source .bashrcpara aplicar as alterações ao novo ambiente, mas ainda sem efeitos.

Eu uso, xfce4-terminalentão eu pensei que poderia ser o terminal e não o bash.

Mas editando:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

E mudando:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

para:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

Não faz diferença também.

Ravexina
fonte

Respostas:

83

bash-completion é um conjunto de scripts bash que permite a conclusão personalizada para comandos específicos.

Isto não é apenas para arquivos e diretórios, mas também para os comandos. Então você digita parcial dos comandos e, pressionando Tab, obtemos uma conclusão automática dos comandos.

Instalação

Etapa 1: instalar a conclusão do bash

$ sudo apt-get install bash-completion

E algumas vezes funciona se o reinstalarmos pelo comando follwing:

$ sudo apt-get install --reinstall bash-completion

Etapa 2: ativar a conclusão do bash no seu .bashrcarquivo

Abra o seu gedit ~/.bashrce, se esse conteúdo não existir, adicione-o no final e salve-o.

# 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

Importante: Depois de mudanças que você precisa de fonte seu ~/.bashrccom source ~/.bashrcou reabrir o Terminal. Deve ser corrigido agora.

αғsнιη
fonte
11
Gostaria de confirmar que a adição do bloco de código acima ao arquivo ~ / .bashrc funcionou para mim. Apenas um comentário; você realmente não precisa se desconectar e se conectar novamente para fazê-lo funcionar (talvez você não queira encerrar o que trabalha), basta executar source ~/.bashrc.
Nullsppetto
Eu tive que reabrir o terminal para que ele funcionasse!
Gilberto Albino
2
De repente, a conclusão parou de funcionar para mim. As etapas acima não corrigem o problema. Alguma idéia de como solucionar o problema? No ubuntu 16.04
Gudlaugur Egilsson,
11
O passo 2 faz isso por mim. Ou obtenha o modelo de/etc/skel/.bashrc
Hendy Irawan
11
@SergioIvanuzzo não sabe ao certo qual é o problema que você está enfrentando. Este arquivo ajuda-o a unix.stackexchange.com/q/219342/72456 , caso contrário, abra sua própria pergunta para o problema que você tem.
αғsнιη
27

Se o seu gabinete não estiver funcionando na guia terminal Xfce,

A solução é a seguinte:

  1. Abrir Application Menu> Settings> Window Manager.
  2. Clique na Keyboardaba.
  3. Limpe a Switch window for same applicationconfiguração.

Captura de tela do Gerenciador de janelas como limpar a janela do switch para o mesmo aplicativo

Encontrei a solução aqui

itsho
fonte
Tentei aceitar awnser, mas tudo já estava no lugar. Esta foi realmente a solução para mim.
user1226868
Idem. Ótima dica.
cerebrou
Muito obrigado, eu estava realmente enlouquecendo com este.
Dustin Cowles
2
Ainda a solução que eu precisava partir de maio de 2018.
clifgray
Obrigado trabalhou para mim
MMH 03/04
3

Você também pode estar em um shell que não suporta a conclusão automática (ex: Bourne Shell | SH). Se você deseja que o BASH seja concluído automaticamente, é necessário alternar as conchas, em vez disso, diga BASH (Bourne Again SHell) com o comando

chsh -s /bin/bash

Fonte: Ubuntu Wiki - Mudando de Shell

Michael Lowden
fonte
1

No meu caso, eu estava tentando executar um script ./myScript.she a digitação ./my[tab]não seria concluída automaticamente.

Eu tive que adicionar permissões de execução ao arquivo e a conclusão automática funcionou.

Hezi
fonte