web-dev-qa-db-fra.com

Puis-je rendre la saisie semi-automatique insensible à la casse dans Bash?

Le terminal d'Ubuntu utilise l'auto-complétion sensible à la casse, comme on pourrait s'y attendre pour Linux.

Mais je pense qu’il serait souvent plus pratique d’utiliser une solution insensible à la casse à la place, pour vous éviter d’être précis au début du nom, et que les faux positifs supplémentaires en valent probablement la peine. Est-il possible de changer ce comportement?

140
mwfearnley

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

Exécutez le script 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émarrer un nouveau shell (rouvrir le terminal).

Pour effectuer les modifications à l'échelle du système:

# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc

Pour plus de détails, voir man bash . Oui, la page est longue, mais bash est un programme assez complexe, et si vous souhaitez simplement rechercher dans cette page la mention "sensible à la casse" pour accéder à la section correspondante. Les gens apprennent généralement bash une option à la fois ou un script à la fois et il faut beaucoup de temps pour maîtriser toutes les nuances. Votre intérêt peut varier.

164
Panther

Ouvrez un terminal et tapez la commande ci-dessous:

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

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

Si, dans certains cas, vous souhaitez supprimer la casse, modifiez simplement le fichier/etc/inputrc en supprimant la ligne set completion-ignore-case.

C'est tout.

48
emtin4

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

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

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

11
init3

Vous pouvez le faire en définissant une variable de configuration pour GNU readline, qui gère l’entrée dans un shell interactif.

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

bind "set completion-ignore-case on"

Il peut être activé pour toutes les futures sessions bash en le mettant dans le fichier ~/.inputrc des utilisateurs ou dans le système /etc/inputrc pour l'activer pour tous les utilisateurs. C'est le fichier d'initialisation pour readline.

Cependant, notez que si vous créez ~/.inputrc, cela remplacera la copie système . (Pour moi, certains mappages de clés, tels que Ctrl-Left/Rightname__, m'ont été perdus. Vous pouvez voir lesquels en lisant attentivement le fichier /etc/inputrc.)
Pour résoudre ce problème, placez la ligne $include /etc/inputrc en haut de ~/.inputrc, par exemple:

$include /etc/inputrc

set completion-ignore-case on

Pour appliquer les modifications, redémarrez bash ou rechargez inputrc , par exemple. avec Ctrl+x,Ctrl+r.

Plus d'informations sur readline et inputrc sont disponibles dans man bash et man 3 readline .

3
mwfearnley