我正在运行Ubuntu 13.10和钓鱼2.1.0。我想自己写一个Python脚本来从命令行执行一些任务。该脚本将需要命令行参数。
如何编写我的脚本,以便fish可以请求并获取给定参数的可能值。潜在价值清单是动态的。也就是说,它将以编程方式确定(例如,符合某些标准的文件夹名称列表)。
我的目标最终结果是:
user@machine ~> myprog argument=fol<TAB>
folder1 folder2 folder3
myprog
是我的脚本文件,argument
是参数名称,folder1
等是我脚本中某些函数生成的有效值。
这是可能的,如果是这样的话?
答案 0 :(得分:13)
改编自zanchey's comment on GitHub:
如果您的程序myprog
采用--_completion
选项,则可以为myprog
编写一个完整存根,如下所示:
complete --command myprog --arguments '(myprog --_completion (commandline -cp)'
然后您的程序将被调用为myprog --_completion myprog some arguments here
,您可以使用相应的完成进行回复。它应该只返回正在完成的当前令牌(您也可以使用(commandline -ct)
将其传递给程序,或者自己标记),然后可选择使用选项卡和简短描述。多个完井用新线分开。
注意:
--_completion
是python-selfcompletion库建议的约定,但您可以使用任何您想要的内容,而且这个答案不是特定于Python的对于Python脚本,以下库可能会在将来某些时候支持鱼类完成(但它们还没有):
答案 1 :(得分:9)