web-dev-qa-db-fra.com

Complétion des onglets insensible à la casse dans Bash

Existe-t-il un moyen de faire en sorte que Bash tab ne traite pas la casse de manière insensible?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-Apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

J'utilise Mac OS X 10.6

137
Jeffrey Aylesworth

Mettre à jour le texte dans /etc/inputrc pour l'inclure

définir la complétion-ignorer-la casse

Ensuite, utilisez ^X ^R pour recharger la configuration.

164
John T

Restructuré avec l'avantage du recul pour mettre en contraste les avantages et les inconvénients de l'utilisation de [.]inputrc par rapport à .bash_profile.
Astuce du chapeau à underscore_d pour son aide.

Remarque: L'édition de ligne de commande dans Bash est fournie par la bibliothèque Readline. la personnalisation est non triviale, mais vaut la peine d'être apprise; ses fonctionnalités incluent la possibilité de définir des raccourcis clavier personnalisés pour l'insertion d'extraits de texte prédéfinis - voir Édition en ligne de commande dans le manuel de référence Bash

Pour constamment rendre la complétion par des tabulations insensible à la casse dans Bash:


Option A: Si vous avez déjà:

  • un fichier /etc/inputrc (s'applique à l'ensemble du système, la modification nécessite Sudo)
  • et/ou un fichier ~/.inputrc (spécifique à l'utilisateur)

    et/ou

vous envisagez de personnaliser la bibliothèque readline de manière approfondie et/ou souhaitez rendre les personnalisations effectives pour les scripts également lorsqu'ils appellent read -e:

Ajouter une ligne

set completion-ignore-case on

vers soit le fichier , selon que vous souhaitez ou non que le paramètre soit effectif pour tous les utilisateurs ou le actuel utilisateur (créez le fichier si nécessaire).

Une commande connexe facilitant la complétion des noms de fichiers et de répertoires est la suivante:

set show-all-if-ambiguous on

Cela évite d'avoir à appuyer deux fois sur Tab lorsqu'il y a plusieurs correspondances.


Option B: Vous pouvez également ajouter des commandes Readline à votre fichier ~/.bash_profile spécifique à l'utilisateur sous OS X (ou ~/.bashrc sous Linux) en les transmettant sous la forme d'un fichier unique. argument de la bind intégré :

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

Notez que les commandes bind dans ~/.bash_profile/~/.bashrc ont priorité sur les commandes équivalentes dans /etc/inputrc ou ~/.inputrc.

Comme indiqué ci-dessus, la configuration de Readline définie de cette manière ne ne prendra pas effet dans les scripts qui appellent read -e pour activer le support Readline pour la lecture des entrées utilisateur.

109
mklement0

Pour éviter de modifier la configuration pour tous les utilisateurs et pour éviter les autorisations root, utilisez les éléments suivants:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

Puis reconnectez-vous ou rechargez ~/.inputrc

1
Ankur A Sharma