La complétion automatique du terminal ne fonctionne pas correctement

56

Si je commence à taper une commande comme apt-gaprès avoir frappé tab, le shell termine la commande en apt-get, mais pour la deuxième partie de la commande, comme install, si je saisis des caractères tels que insta, frapper tab, ne la complète pas install.

Autre exemple: après avoir sudofrappé, tabrien ne se termine. par exemple: sudo apt-ge[ tab] et rien.

J'ai installé Ubuntu en utilisant une mini-iso (installateur de réseau de 40 Mo), alors il y a peut-être une config que j'ai manquée!

J'ai ajouté ce code à mon fichier .bashrcmais cela ne fonctionne toujours pas:

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

J'ai aussi vérifié l'autorisation de .bashrcet c'est -rw-r--r--.

Je source également les .bashrcmodifications après en utilisant source .bashrcpour appliquer les modifications au nouvel environnement, mais toujours aucun effet.

J'utilise xfce4-terminaldonc j'ai pensé que cela pourrait être le terminal et pas la bash.

Mais montage:

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

Et en changeant:

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

à:

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

Cela ne fait aucune différence aussi.

Ravexina
la source

Réponses:

84

bash-completion est un ensemble de scripts bash permettant une exécution personnalisée pour des commandes spécifiques.

Ce n'est pas seulement pour les fichiers et les répertoires, mais aussi, par exemple, pour les commandes. Donc, vous tapez des commandes partielles et en appuyant, Tabnous obtenons une complétion automatique des commandes.

Installation

Étape 1: Installez bash-completion

$ sudo apt-get install bash-completion

Et parfois, cela fonctionne si nous le réinstallons avec la commande suivante:

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

Étape 2: Activer bash-completion dans votre .bashrcfichier

Ouvrez votre gedit ~/.bashrcet si ce contenu n’existe pas là-bas, ajoutez-le à la fin et sauvegardez-le.

# 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

Important: Une fois les modifications dont vous avez besoin à la source de votre ~/.bashrcavec source ~/.bashrcou rouvrir votre terminal. Il devrait être résolu maintenant.

αғsнιη
la source
1
Je voudrais confirmer que l’ajout du bloc de code ci-dessus au fichier ~ / .bashrc a fonctionné pour moi. Juste un commentaire; vous n'avez pas vraiment besoin de vous déconnecter et de vous reconnecter pour que cela fonctionne (vous pouvez ne pas vouloir mettre fin à vos tâches), vous pouvez simplement exécuter source ~/.bashrc.
nullgeppetto
Je devais rouvrir le terminal pour que cela fonctionne!
Gilberto Albino
2
La fin a soudainement cessé de fonctionner pour moi, les étapes ci-dessus ne résolvent pas le problème. Des idées sur la façon de résoudre le problème? Le 16.04
Gudlaugur Egilsson le
1
L'étape 2 le fait pour moi. Ou obtenez le modèle de/etc/skel/.bashrc
Hendy Irawan
1
@SergioIvanuzzo pas sûr de la question à laquelle vous êtes confronté, vous pouvez regarder cela unix.stackexchange.com/q/219342/72456, ça aide, sinon ouvrez votre propre question au problème que vous avez.
αsнιη
27

Si votre cas est onglet terminal ne fonctionne pas sous Xfce,

La solution est la suivante:

  1. Ouvrir Application Menu> Settings> Window Manager.
  2. Cliquez sur l' Keyboardonglet.
  3. Effacer le Switch window for same applicationréglage.

Window Manager capture d'écran comment effacer la fenêtre de commutation pour la même application

J'ai trouvé la solution ici

itsho
la source
Essayé accepté awnser, mais tout était déjà en place. C'était vraiment la solution pour moi.
user1226868
Idem. Excellent indice.
Cerebrou
Merci beaucoup, je perdais vraiment la tête à ce sujet.
Dustin Cowles
2
Toujours la solution dont j'avais besoin à partir de mai 2018.
Clifgray
Merci a travaillé pour moi
MMH le
3

Vous pouvez également être dans un shell qui ne prend pas en charge la saisie automatique (ex: Bourne Shell | SH). Si vous voulez que BASH se termine automatiquement, vous devez changer de coque, dites plutôt à BASH (Bourne Again SHell) avec la commande

chsh -s /bin/bash

Source: Ubuntu Wiki - Changer de coquille

Michael Lowden
la source
1

Dans mon cas, j'essayais d'exécuter un script ./myScript.shet la saisie ./my[tab]ne se terminait pas automatiquement.

J'ai dû ajouter des autorisations d'exécution au fichier et l'auto-complétion a fonctionné.

Hezi
la source