键入“第一个命令”时Bash可编程完成

时间:2012-05-04 13:56:34

标签: bash command bash-completion

有没有办法控制在bash4命令提示符下输入第一个命令的完成情况?

我可以使用完整的-E控制“空行”的完成,但是只要输入了一些字符,bash(或者可能是readline)就会给我所有来自PATH的文件名,内置命令(if,then,else ...... )和完成尝试时的功能(TAB)。

我能够通过在PROMPT_COMMAND中取消设置PATH并通过绑定功能来捕获DEBUG来恢复它,但是没有运气来摆脱bash bultin命令的完成。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这是bash可编程完成设施设计中的一个真正的弱点。即使“默认”命令完成-D也仅对空白行上的命令生效(假设未指定complete -E)。 <{1}}(对于未完全输入的命令)缺少。

答案 1 :(得分:0)

Bash 5.0 开始,bash 内置 complete 支持 -I 选项:

<块引用>

-I 选项表示其他提供的选项和操作应该 申请完成行上的初始非分配词,或 在命令分隔符之后,例如‘;’或‘|’,通常是命令 名称补全。

我能够在 ubuntu docker 映像上download and install bash 5.1 毫无问题地使用它来模拟工具环境 shell。重击 5 should mostly be a drop-in replacement

答案 2 :(得分:-3)

bash完成存储在/etc/bash_completion.d/中 如果您具有root访问权限,则可以在那里编辑/删除文件。

如果您想在用户级别控制事物,则可以创建和编辑〜/ .inputrc。看看/ etc / inputrc,它会让你知道从哪里开始。

〜/ .inputrc会覆盖/ etc / inputrc中的任何内容,因此您可以更改bash_completion查找完成文件的位置。您可以创建一个本地完成目录,并只在那里完成您想要完成的项目。我相信你也可以消除bash内置插件。

还有一些关于bash完成在线的非常好的教程。 Here Here