我有一個程序,可以接受大量的有效參數。其中許多都有共同的前綴,並且處於目錄樹結構中。這些選項通常不存在,有些目錄可以使用或不使用斜線,但有些只能使用斜線。bash可編程選項卡完成增量目錄完成
如果我已經有bash補,顯示我的選擇列表,然後爲我按改變了命令行和下面部分完成參數:
$ myprog <TAB><TAB>
foo
somedirectory/a
somedirectory/b
somedirectory/c
zibble
zibble/a
zibble/b
zibble/c
$ myprog so<TAB>
$ myprog somedirectory<TAB><TAB>
somedirectory/a
somedirectory/b
somedirectory/c
$ myprog somedirectory/<TAB><TAB>
a
b
c
我如何改變它的bash完成,這是否像普通的文件/目錄完成:
$ myprog <TAB><TAB>
foo
somedirectory/
zibble
zibble/
$ myprog so<TAB>
$ myprog somedirectory/<TAB><TAB>
a
b
c
和
$ myprog <TAB><TAB>
foo
somedirectory/
zibble
zibble/
$ myprog zi<TAB>
$ myprog zibble<TAB><TAB>
zibble
zibble/
$ myprog zibble/<TAB><TAB>
a
b
c
你怎麼確定'zibble'應該沒有'/'附加項,但'只有'/'有些目錄'? – geirha
如果有一個名爲「zibble」的目標,那麼它應該有沒有/的額外條目,而如果有以「zibble /」作爲前綴的目標,帶有/的條目應該在那裏。我已經用Debian的bash完成補丁解決了這個問題。 – codeshot