Kendi komut dizim için otomatik tamamlama veya sekme tamamlama özelliğini geliştirmeye çalışıyorum.İç içe geçmiş, çok düzeyli alt komutları otomatik olarak nasıl tamamlarım?
Örneğin, foo benim ikili olduğunu varsayalım:
CLI>> foo [TAB] [TAB]
ana komutlar configure
ve show
göstermelidir. - nasıl ikinci alabilirim
CLI>> foo [TAB] [TAB]
DSP NPU CM`
Ben sadece ne kadar ilk seviye için sekme tamamlama ve ekran biliyorum: Ben configure
seçerseniz
Sonra, alt komutunu CM
, DSP
ve NPU
göstermelidir seviyesi de mi?
Bunu /etc/completion.d
ürününe yerleştireceğim.
Benim Kod:
_foo()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
words=("${COMP_WORDS[@]}")
cword=$COMP_CWORD
opts="configure show"
}
Ben CM
DSP
NPU
configure
altındaki alt komutları nasıl ekleneceği olarak sıkıştım.
_foo()
{
local cur prev
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
case ${COMP_CWORD} in
1)
COMPREPLY=($(compgen -W "configure show" -- ${cur}))
;;
2)
case ${prev} in
configure)
COMPREPLY=($(compgen -W "CM DSP NPU" -- ${cur}))
;;
show)
COMPREPLY=($(compgen -W "some other args" -- ${cur}))
;;
esac
;;
*)
COMPREPLY=()
;;
esac
}
complete -F _foo foo
: - (bunlar durumda alakalı değilseniz sadece bu üç satırlık silebilirsiniz nasıl yapıldığını göstermek için
show
ait alt komutlarının bir bölümle) İşte
Tam olarak ihtiyacım olan şey buydu. Ben ilerlediğimde size geri döneyim. – Puneeth
İlginç, ne kadar havalı şeyler burada bulabilirsiniz ;-) – GhostCat