Don*_*vey 22 bash shell tab-completion bash-completion
我正在尝试编写一个小型命令启动器应用程序,并希望在我自己的完成系统中使用bash的选项卡完成.我已经能够获得一般命令的完成列表compgen -abck
.
但是,我还希望获得特定命令的完成:例如,输入git p
应显示git命令的完成.
我有什么方法可以compgen
用来做这个吗?如果没有,还有其他方法可以通过编程方式获得完成列表吗?
[编辑:澄清一点,我不是要为 bash 提供完成 - 我的应用程序是一个GUI命令启动器.我只想在我自己的应用程序中使用bash的现有完成.
Uli*_*ter 12
我真的不知道它是如何工作的,但是很棒的窗口管理器使用以下Lua代码来访问bash完成的结果:
https://github.com/awesomeWM/awesome/blob/master/lib/awful/completion.lua#L119
complete -p
我们找到complete -o bashdefault -o default -o nospace -F _git git
.我们以后会记得"_git".我们一起使用以下脚本:
__print_completions() {
printf '%s\n' "${COMPREPLY[@]}"
}
# load bash-completion functions
source /etc/bash_completion
# load git's completion function
_completion_loader git
COMP_WORDS=(git l)
COMP_LINE='git l'
COMP_POINT=6
COMP_CWORD=1
_git
__print_completions
Run Code Online (Sandbox Code Playgroud)
输出:"log"