#1 Le 23/07/2011, à 11: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, à 22:37)
Free Ukraine!
Hors ligne
#2 Le 05/08/2011, à 18: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, à 10: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
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne