我有一个程序,可以接受大量的有效参数。其中许多都有共同的前缀,并且处于目录树结构中。这些选项通常不存在,有些目录可以使用或不使用斜线,但有些只能使用斜线。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