我如何获得 bash 补全?

我如何获得 bash 补全?

有没有一种好的方法可以打印(例如到 stdout)bash 中所有可能的命令完成的列表(如果我输入命令然后按下 tab 键,它会给我的列表)?

编辑:现在我又读了一遍,我觉得这还不是很清楚。我知道如何手动完成。我想通过编程来实现。

答案1

bash 没有专门用于执行此操作的函数。可编程的补全在很大程度上取决于各种参数,例如光标位置...

eval $(complete -p 'git' | sed s/^complete/compgen/)

似乎可以工作,但是非常脆弱。

答案2

TAB两次。大多数类似 BASH 的 shell 都会列出给定子字符串的所有匹配的自动完成选项。

例如

root@host$apt-get up

双击此命令将TAB列出UpdateUpgrade

答案3

确保已bash-completion安装该软件包。根据安装类型,它可能默认包含,也可能不包含,如果没有,只需使用yum或获取它apt。安装后,您需要注销并重新登录或重新获取资源.bashrc才能使用它。

@Amazed 对如何使用它给出了正确的答案。

答案4

我认为您要求的基本上是以给定字符串开头的所有命令的列表。您应该能够通过获取系统上所有可执行文件的列表并通过 grep 运行它们来做到这一点。

相关内容