218 votes

Puis-je rendre l'autocomplétion par tabulation insensible à la casse dans Bash ?

Le terminal d'Ubuntu utilise l'autocomplétion sensible à la casse, comme on peut s'y attendre pour Linux.

Mais je pense qu'il serait souvent plus pratique d'utiliser un système insensible à la casse à la place, pour vous éviter d'avoir à être précis lorsque vous commencez un nom, et cela vaudrait probablement la peine de prendre en compte les faux positifs supplémentaires. Est-il possible de modifier ce comportement ?

265voto

Panther Points 96601

Afin de faire bash insensible à la casse pour l'utilisateur actuel :

Exécutez le Shell Shell suivant dans un terminal :

# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi

# Add shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc

Démarrez un nouveau Shell (rouvrez le terminal).

Pour effectuer les changements dans tout le système :

# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
# you may have to use this instead if you are not a superuser:
echo 'set completion-ignore-case On' | sudo tee -a /etc/inputrc

Pour plus de détails, voir man bash . Oui, c'est une longue page, mais bash est un programme quelque peu complexe, et si vous voulez, il suffit de rechercher "insensible à la casse" sur cette page pour accéder à la section correspondante. Les gens apprennent généralement bash une option à la fois ou un bash script à la fois et cela prend beaucoup de temps pour maîtriser toutes les nuances. Votre intérêt peut varier.

67voto

Duane Points 606

Ouvrez un terminal et tapez la commande suivante :

echo set completion-ignore-case on | sudo tee -a /etc/inputrc

Entrez le mot de passe. Redémarrez le terminal.

Si, dans certains cas, vous souhaitez supprimer la sensibilité à la casse, il suffit d'éditer le fichier /etc/inputrc en supprimant la balise set completion-ignore-case ligne.

C'est tout.

25voto

init3 Points 259

Je sais que cette question est très ancienne mais, à moins que je ne manque quelque chose, je pense avoir une solution super simple si vous utilisez bash.

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

Ou ajoutez simplement la ligne en utilisant votre éditeur de texte préféré. Redémarrez votre session bash et profitez-en.

7voto

mwfearnley Points 2881

Vous pouvez le faire en définissant une variable de configuration pour GNU readline qui est ce qui gère l'entrée dans un Shell interactif.

La variable nécessaire est completion-ignore-case et peuvent être définis directement dans votre session bash avec :

bind "set completion-ignore-case on"

Il peut être activé pour toutes les futures sessions bash en mettant set completion-ignore-case on dans le dossier de l'utilisateur ~/.inputrc ou le système /etc/inputrc pour l'activer pour tous les utilisateurs. C'est le fichier d'initialisation de readline.

(Notez que ~/.inputrc n'existe probablement pas, et vous devrez le créer, ce qui permettra de remplacer la copie du système en /etc/inputrc . De nombreux mappages de clés utiles sont configurés, tels que Ctrl-Left / Right .

La façon de résoudre ce problème est de mettre la ligne $include /etc/inputrc au sommet de ~/.inputrc par exemple :

$include /etc/inputrc

set completion-ignore-case on

Ensuite, redémarrez bash ou recharger l'inputrc , par exemple avec Ctrlx , Ctrlr .)

Plus d'informations sur readline et inputrc peuvent être trouvées dans man bash y man 3 readline .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X