L'achèvement de la commande pour `cd` peut-il être modifié pour afficher uniquement les répertoires et ignorer les fichiers?

12

Quand je suis dans un répertoire en bash, et que j'appuie cd Space Tab, cela montre tout dans le répertoire comme une possibilité. ( Show all 1000 possibilities?) C'est vraiment lourd quand je suis dans un répertoire avec beaucoup de fichiers réguliers et relativement peu de répertoires.

Alors, est-il possible de faire des choix pour l'auto-complétion de cdn'inclure que les répertoires?

Je sais que je peux obtenir une liste de répertoires dans un répertoire en faisant

ls -d */

mais je ne sais pas comment procéder à partir de là.

J'utilise CentOS 6.6 Final .

chiliNUT
la source

Réponses:

25

Ajoutez simplement

complete -d cd

dans votre ~/.bashrc(ou autre fichier de configuration bash).

jimmij
la source
Ça marche! Merci. J'ai dû taper bashaprès pour recharger mon ~/.bashrcfichier
chiliNUT
C'est intéressant. C'est le comportement par défaut sur mon installation Debian, mais la frappe completene s'affiche pas -d cdou quelque chose comme ça. Apparemment, cela a été fait d'une autre manière ici.
Tom Zych
@TomZych Il existe un script de complétion bash populaire , il est très probable que votre distribution l'ait installé par défaut.
jimmij
2
Pour relire le ~/.bashrctype . ~/.bashrc. Cela peut ne pas démarrer un sous-shell.
ctrl-alt-delor
1
@richard One peut également simplement retaper / coller cette commande dans le shell interactif actuel.
jimmij
2

Cela devrait se produire automatiquement lors d'une installation typique sur de nombreuses distributions.
Si ce n'est pas le cas, le bash-completionpackage vous manque probablement :

  • Ubuntu: sudo apt-get install bash-completion
  • Cambre: sudo pacman -S bash-completion
user541686
la source