Bonjour à tous, voici un rapide tutorial pouvant vous être utile, enfin je l'espère. Pour définir une complétion (simple) d'un programme, il n'est pas obligatoire de créer une fonction (_commande). Il est possible de la définir via la commande compdef, via la syntaxe suivante : (l'une des nombreuses possibles) compdef _widget commande [commande ..] On peut donc par exemple définir la complétion pour l'outil mtr : compdef _hosts mtr Il est donc possible d'utiliser le widget _wanted pour définir sa propre complétion. (cf doc section 20.6) Un petit exemple de définition d'une complétion très simple. Soit les outils debian a2* (a2enmod, a2dismod, a2enmod, a2dismod) qui attendent un unique argument correspondant soit à un site disponible (/etc/apache2/sites-available) soit à un site activé (/etc/apache2/sites-enabled), pareil pour les modules. Commencons par créer la liste des sites et des modules : --%<-- mods_enabled=(/etc/apache2/mods-enabled/*) --%<-- mods_enabled contient ici une liste qui ressemble à : % echo $mods_enabled /etc/apache2/mods-enabled/actions.load /etc/apache2/mods-enabled/cgi.load /etc/apache2/mods-enabled/rewrite.load Il s'agit donc de mettre en forme les données pour n'obtenir qu'une liste du type (actions cgi rewrite) --%<-- mods_enabled=${(u)mods_enabled:t:r} --%<-- mods_enabled:t - équivalent à basename (doc section 14.1.4) mods_enabled :r - supprime l'extension (doc section 14.1.4) ${(u)mods_enabled} - suppression des doublons (dans le cas d'un module avec un fichier .load et un fichier .conf) (section 14.3.1) On dispose maintenant de notre liste, il ne nous reste plus qu'à définir la complétion --%<-- compdef "_wanted mod expl 'Apache 2 module' compadd $mods_enabled" a2dismod --%<-- Ce qui peut donner quelque chose du genre : --8<-- apache2_comp () { typeset mods_available mods_enabled sites_available sites_enabled mods_available=(/etc/apache2/mods-available/*) sites_available=(/etc/apache2/sites-available/*) mods_enabled=(/etc/apache2/mods-enabled/*) sites_enabled=(/etc/apache2/sites-enabled/*) mods_available=${(u)mods_available:t:r} mods_enabled=${(u)mods_enabled:t:r} sites_available=${(u)sites_available:t} sites_enabled=${(u)sites_enabled:t} compdef "_wanted site expl 'Apache 2 site' compadd $sites_available" a2ensite compdef "_wanted site expl 'Apache 2 site' compadd $sites_enabled" a2dissite compdef "_wanted mod expl 'Apache 2 module' compadd $mods_available" a2enmod compdef "_wanted mod expl 'Apache 2 module' compadd $mods_enabled" a2dismod } [ -d /etc/apache2 ] && apache2_comp --8<-- Retrouver la fonction sur : http://svn.asyd.net/svn/zsh/trunk/rc.os/Debian.zsh -- http://asyd.net/home/ - Home Page http://guses.org/home/ - French Speaking Solaris User Group