![使用 bash 自动补全时如何获取整个命令行](https://linux22.com/image/166537/%E4%BD%BF%E7%94%A8%20bash%20%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8%E6%97%B6%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E6%95%B4%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%A1%8C.png)
关于使用 定义新的 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手册。