Ich versuche, die automatische Vervollständigung für einen Befehl einzurichten, der nur einen Parameter, einen Ordnernamen, akzeptiert.
In habe /secure/kernel_builds/
ich die drei folgenden Unterordner:
3.5.6/ 3.6.2/ source/
Jetzt möchte ich die automatische Vervollständigung, die alle möglichen Unterordnernamen auflistet, aber nicht den genannten source
. Im Moment verwende ich eine ziemlich dumme Methode, um zu überprüfen, ob das Vervollständigungswort mit einer Zahl begonnen wird.
_avail_kernel_builds()
{
case $COMP_CWORD in
1)
if [[ "${COMP_WORDS[COMP_CWORD]}" =~ ^[0-9] ]];then
COMPREPLY=( /secure/kernel_builds/"${COMP_WORDS[COMP_CWORD]}"* )
else
COMPREPLY=( /secure/kernel_builds/"${COMP_WORDS[COMP_CWORD]}"[0-9]*/ )
fi
COMPREPLY=( "${COMPREPLY[@]#/secure/kernel_builds/}" )
COMPREPLY=( "${COMPREPLY[@]%/}" )
;;
esac
}
Gibt es einen besseren Weg, dies zu tun?
quelle