jpk*_*tta 13 api bash bash-completion
我想要的是一个我可以从程序中调用的函数,因此它完成了bash给出命令行和按下TAB的位置的方式.
. /etc/bash_completion
generate_completions "command arg1 arg2" 17
Run Code Online (Sandbox Code Playgroud)
将返回相同的东西
command arg1 arg2[TAB]
Run Code Online (Sandbox Code Playgroud)
我没有看到任何方法这样做.
我实际上必须这样做才能弄清楚apt-get autocomplete如何在ubuntu上运行(构建我自己的伪存储库工具:)
这是一个多步骤的过程:
首先,complete -p将以一组命令的形式为您提供所有完成的列表,您可以运行这些命令来复制配置.例如,假设您想要查找自动完成功能apt-get.然后:
$ complete -p | grep apt-get
complete -F _apt_get apt-get
Run Code Online (Sandbox Code Playgroud)
这告诉您shell函数_apt_get由完成机制调用.
你需要重新创建函数使用的特殊变量,即COMP_LINE(整行),COMP_WORDS(所有参数的bash数组 - 基本上是拆分COMP_LINE),COMP_CWORD(索引,应该指向最后一个值),COMP_POINT(在你正在进行自动完成的单词中,以及COMP_TYPE(这就是你告诉它你想要完成的方式,就像你点击标签一样).
注意:阅读联机帮助页以获取更多信息 - 这就是我首先想到的. man bash