Unix-bash cd commande puis onglet affiche les répertoires et les fichiers

Dans un shell bash unix, lorsque je saisis cd puis appuie sur la touche tab, il répertorie les répertoires et les fichiers comme options disponibles. L’affichage des répertoires et probablement des liens vers les répertoires doit être intuitif. La liste des fichiers ne serait-elle pas intuitive?

Par exemple, ./ et ensuite l’onglet répertorie uniquement les éléments qui ont des permissions d’exécution, ce qui est intelligent.

Pourquoi ne pas bash avoir les mêmes connaissances avec la commande cd? Est-ce un bug?

Ajoutez la commande suivante à votre bashrc :

 complete -d cd # or ``complete -A directory cd'' 

alors il ne remplira que les répertoires (y compris les liens symboliques vers les répertoires) pour la commande cd .

Reportez- vous à la section Fonctions intégrées de fin de programmation dans le manuel de bash pour plus de détails.

Dans les deux cas, vous obtenez l’achèvement du nom de fichier. bash a juste assez d’intelligence pour reconnaître qu’un nom de commande doit avoir une autorisation exécutable, donc il limite ./ + Tab aux fichiers exécutables. Compléter les arguments sur cd relève du domaine de l’achèvement programmable (car il est possible, bien que peu judicieux, de suivre une commande intégrée avec une commande complètement différente qui ne prend pas nécessairement des répertoires comme arguments).

Les fonctions d’achèvement programmable de bash sont plutôt bonnes, mais pour une raison quelconque, elles n’incluent pas vraiment de telles complétions dans l’installation de base. Il existe un grand nombre de complétions disponibles , y compris une pour le cd .