Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/07/2011, à 12:31

luigifab

[Résolu] Bash completion : dossiers et options

Bonjour

J'ai un problème, je n'arrive pas à finir mon fichier d'auto-complétion.

Voici mon soucis, pour mon fichier, j'ai besoin de trois choses :
1) la complétion des options (fonctionne),
2) la complétion des noms des dossiers (fonctionne),
3) soit l'un soit l'autre (ne fonctionne pas).

Voici mon fichier d'auto-complétion (/etc/bash_completion.d/test) :

_albumOpts() {
        local cur opts
        cur="${COMP_WORDS[COMP_CWORD]}"
        opts="--yes --overwrite --nobrowser --lang"
        if [[ ${cur} == -* ]] ; then
                COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
                return 0
        else
                COMPREPLY=()
                return 1
        fi
}
_albumDirs() {
        local cur
        cur="${COMP_WORDS[COMP_CWORD]}"
        COMPREPLY=($(compgen -d -S/ ${cur}))
        return 0
}
complete -o default -F _albumOpts test || complete -o nospace -F _albumDirs test

(1) En tapant la commande suivante ([TAB] correspond à l'appui sur la touche tabulation), la liste des options possibles s'affichent :

fabrice@luigi:~$ test -[TAB]
--lang       --nobrowser  --overwrite  --yes

2) En tapant la commande suivante, la liste des dossiers s'affichent (il faut cependant supprimer complete -o default -F _albumOpts test || du fichier d'auto-complétion) :

fabrice@luigi:~$ test --nobrowser /media/documents/[TAB]
/media/documents/Images/              /media/documents/Saga/
/media/documents/Textes/              /media/documents/Photos/

(3) En revanche, en tapant la commande suivante, cela ne fonctionne pas.
En effet, je ne veux que les noms des dossiers, or ici en plus des dossiers, il y a également les fichiers :

fabrice@luigi:~$ test --nobrowser /media/documents/[TAB]
Images/                        Saga/
natty.deb.txt                  Textes/
Photos/                        ubuntu-9.10-desktop-amd64.iso

Le problème vient soit de la dernière ligne du fichier d'auto-complétion, soit du return 1 de la première fonction.
Est-ce que quelqu'un a une idée pour résoudre ce problème ?

Dernière modification par luigifab (Le 07/09/2011, à 23:37)


Free Ukraine!

Hors ligne

#2 Le 05/08/2011, à 19:21

luigifab

Re : [Résolu] Bash completion : dossiers et options

Trouvé !

_albumOpts() {
        local cur opts
        cur="${COMP_WORDS[COMP_CWORD]}"
        opts="--yes --overwrite --nobrowser --lang"
        if [[ ${cur} == -* ]] ; then
                COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
                return 0
        fi
}
complete -o dirnames -F _albumOpts test

Free Ukraine!

Hors ligne

#3 Le 22/02/2015, à 11:39

Hizoka

Re : [Résolu] Bash completion : dossiers et options

je remonte ce sujet simplement pour te dire merci !

j'ai un fichier qui contient de nombreuses fonctions, c'est super pratique !

Juste pour info j'ai mis la fonction et la commande dans .bashrc, ca ne necessite pas de droits root smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne