2009-04-29 11 views
12

Ich habe eine Liste von Unison-Profilen, die in ~/.unison/*.prf existiert.Bash-Vervollständigung für bestimmte Arten von Dateien in einem speziellen Verzeichnis

würde Ich mag bash Abschluss haben, so dass, wenn ich unison oder unison-gtk und drückte Tab geben würde es die .prf Dateien aus dem Ordner ohne den Teil .prf Liste.

Vielleicht wäre ein Beispiel klarer sein:

$ 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 

ich dies auch für ein anderes Werkzeug voraussehen benötigen, so dass es praktisch wäre, wenn es Teile sind, die wiederverwendet werden konnten.

Antwort

15

Wenn Sie debian/ubuntu oder möglicherweise andere GNU/Linux-Distributionen ausführen, sollten Beispiele für diese Art der Vervollständigung in Ihrem Verzeichnis /etc/bash_completion.d/ vorhanden sein. Hier ist ein Beispiel dafür, wie man einen Abschluss Skript für unisono einrichten könnten:

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

Funktioniert prima, die einzigen Änderungen, die ich tat, war komplette -o nospace -F _unison_show Unisono Unisono-gtk –