Je suis en train de mettre en place la fin de bash pour un script utilitaire je l'ai écrit, j'ajouté le script suivant pour /etc/bash_completion.d:bash completion empêche backspace
_mcd()
{
local cur words
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
words=`mcd-completion-words`
COMPREPLY=($(compgen -W "${words}" -- "$cur"))
return 0
}
complete -F _mcd mcd
Le script mcd-completion-words
trouve opérateurs disponibles par programmation pour la commande. Lorsque je relance bash (ou source le script), je peux terminer l'onglet avec succès, mais si je le fais, je ne peux plus revenir en arrière après un caractère complété.
De même, si j'essaie de lister toutes les options (par exemple, j'essaie de compléter l'onglet sans mot en place), bash ajoute un onglet à la commande, que je ne peux pas non plus reculer.
Comment est-ce que je peux imiter bash imiter le comportement normal d'achèvement de fichier? Toute aide est appréciée. Merci!
Voici un cas de test réduit pour les mots mcd-completion-about qui présente toujours le même comportement. Curieusement, le cas de Dennis fonctionne pour moi aussi (en substituant en mots = "un deux trois", par exemple).
#!/usr/bin/env php
<?php
print "one two three four five six seven eight nine";
Quand je fais 'mots =" quelques mots d'essai "' cela semble fonctionner. Veuillez poster le contenu de 'mcd-completion-words'. Le problème peut être là. –
J'ai exactement le même problème sur Ubuntu 11.10. – scribu