OS X Terminal '显示所有命令'功能显示的信息来自哪里?

OS X Terminal '显示所有命令'功能显示的信息来自哪里?

我刚刚了解到,如果你在 Mac 终端上按住ESC,几秒钟后就会出现一个提示,显示系统上可用的每个命令,包括别名、内置命令和 PATH 上的可执行文件。

来源:http://www.mactricksandtips.com/2008/05/list-all-possible-terminal-commands.html

但是,输出是通过more过滤器显示的,我无法grep将其通过管道传输到另一个命令。

有人知道这个神奇的输出是如何生成的吗?它只是由终端动态生成的吗?是否有可以在命令行上显式调用并获得相同结果的 bash 命令?

这主要是出于好奇,但我希望能够将结果以文本形式获取,以便进行后期处理,而不仅仅是在屏幕上浏览。

答案1

正如 Ignacio Vazquez-Abrams 所评论的那样,此功能来自狂欢完成功能。康普根内置命令提供对该功能的访问。

您可以像这样访问命令完成:

# all commands
compgen -c
# command starting with "ls"
compgen -c ls

相关内容