有没有一种好的方法可以打印(例如到 stdout)bash 中所有可能的命令完成的列表(如果我输入命令然后按下 tab 键,它会给我的列表)?
编辑:现在我又读了一遍,我觉得这还不是很清楚。我知道如何手动完成。我想通过编程来实现。
答案1
bash 没有专门用于执行此操作的函数。可编程的补全在很大程度上取决于各种参数,例如光标位置...
eval $(complete -p 'git' | sed s/^complete/compgen/)
似乎可以工作,但是非常脆弱。
答案2
按TAB两次。大多数类似 BASH 的 shell 都会列出给定子字符串的所有匹配的自动完成选项。
例如
root@host$apt-get up
双击此命令将TAB列出Update
Upgrade
答案3
确保已bash-completion
安装该软件包。根据安装类型,它可能默认包含,也可能不包含,如果没有,只需使用yum
或获取它apt
。安装后,您需要注销并重新登录或重新获取资源.bashrc
才能使用它。
@Amazed 对如何使用它给出了正确的答案。
答案4
我认为您要求的基本上是以给定字符串开头的所有命令的列表。您应该能够通过获取系统上所有可执行文件的列表并通过 grep 运行它们来做到这一点。