J'ai besoin que les noms de répertoires dans / mailman / lists soient complétés par des tabulations en tant qu'argument (sans barres obliques) à la commande 'list_members', quel que soit l'endroit où je me trouve dans le système de fichiers.
Dans tcsh (sur notre ancien serveur), j'ai écrit une ligne pour faire ce dont j'avais besoin:
complete list_members 'p,*,F:/mailman/lists,,' #tcsh
L'implémentation de bash semble être plus complexe. Comment puis-je implémenter ce même comportement en utilisant bash?
La complétion par des tabulations doit être contextuelle pour que la partie de l'argument que j'ai déjà saisie affine la recherche, tout comme la complétion standard en bash. Exemple:
list_members sys<TAB> #only shows names beginning with sys
J'ai essayé quelques solutions après avoir examiné des exemples, mais elles ne fonctionnent pas correctement.
Un exemple d'échec:
function _listlists()
{
COMPREPLY=( $( compgen -C 'ls /mailman/lists' ) )
}
complete -F _listlists list_members
Ce qui donne l'erreur:
-bash: compgen: warning: -C option may not work as you expect
Un autre exemple d'échec:
function _listlists()
{
cd /mailman/lists
COMPREPLY=( $( compgen -d ) )
cd -
}
complete -F _listlists list_members
Cela montre tous les résultats de ce répertoire dirigé vers «plus», mais il ne répond pas à l'argument partiel que j'ai déjà saisi.
Merci.
la source
J'ai testé une solution avec les dossiers HOME (pas de mailman sur mon hôte). Est-ce ce que vous recherchez?
la source
ls
.