2009-04-29 5 views
12

J'ai une liste de profils unison qui existe dans ~/.unison/*.prf.achèvement bash pour certains types de fichiers dans un répertoire spécial

Je voudrais avoir terminé bash de sorte que lorsque je tape unison ou unison-gtk et frappé onglet il liste les fichiers .prf de ce dossier sans la partie .prf.

Peut-être un exemple serait plus clair:

$ ls ~/.unison/*.prf 
default.prf dot-mozilla.prf to-desktop.prf 

$ cd ~ # just to show you don't have to be in the ~/.unison folder 
$ unison to<tab> 
$ unison to-desktop 

Je prévois besoin cela pour un autre outil aussi, donc il serait pratique s'il y avait des pièces qui pourraient être réutilisés.

Répondre

15

Si vous exécutez Debian/Ubuntu ou éventuellement d'autres distributions GNU/Linux, vous devriez avoir des exemples de ce type d'achèvement dans votre répertoire /etc/bash_completion.d/. Voici un exemple de la façon dont vous pouvez configurer un script d'achèvement pour l'unisson:

have unison && 
_unison_show() 
{ 
     local cur 

     COMPREPLY=() 
     cur=${COMP_WORDS[COMP_CWORD]} 
     COMPREPLY=($(compgen -W "$(for x in ~/.unison/*.prf; do echo $(basename ${x%.prf}); done)" -- $cur)) 
} 
complete -F _unison_show unison 
+0

fonctionne très bien, les seuls changements que j'ai été complète -o nospace -F _unison_show unisson unisson-gtk –

Questions connexes