使用 bash 自动补全时如何获取整个命令行

使用 bash 自动补全时如何获取整个命令行

关于使用 定义新的 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 bashbash手册

相关内容