关于使用 定义新的 bash 自动完成complete -F
,即编写 shell 函数来生成自动完成,bash手册说
shell函数函数在当前shell环境中执行。执行时,$1 是正在完成其参数的命令的名称,$2 是正在完成的单词,$3 是正在完成的单词之前的单词
但这只是非常小的背景!理想情况下我想要所有的到目前为止的命令行。当前的完成很可能取决于比前一个单词更早设置的选项。是否可以在 bash 的自动补全中访问整个命令行?
[在zsh
整个命令行中似乎可以在$words
变量中使用,并且光标所在的参数的编号由 给出$CURRENT
。我想知道是否有类似的东西bash
,或者访问等效功能的其他方式。]
答案1
bash
提供 shell 变量中参数的完整列表$COMP_WORDS
以及 中光标下单词的索引$COMP_CWORD
。与完成相关的其他有用的 shell 变量以 和 开头,在和 的$COMP...
“Shell 变量”部分中列出。man bash
bash手册。