有什么方法可以列出类似的命令吗?

有什么方法可以列出类似的命令吗?

当你写错命令名时,bash 通常会出现以下情况:

septi@norbert:~$ good
No command 'good' found, did you mean:
 Command 'gold' from package 'binutils' (main)
 Command 'gmod' from package 'gmod' (universe)
 Command 'goo' from package 'goo' (universe)
 Command 'god' from package 'god' (universe)
 Command 'geod' from package 'proj-bin' (universe)
 Command 'gord' from package 'scotch' (universe)
good: command not found

或者有时会这样做:

septi@norbert:~$ nftp
No command 'nftp' found, but there are 23 similar ones
nftp: command not found

有没有办法让 bash 为我显示这 23 个类似的命令?还有,有没有办法显示类似的命令(包括尚未安装的命令),而不是运行应用程序ftp

答案1

Bash 使用命令/usr/lib/command-not-found来查找类似的命令。这又使用了 Python 的CommandNotFound模块。

您在终端上看到的输出(stderr在本例中)也是从此模块生成的。此模块的位置是/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py,在 Ubuntu 14.04 及更高版本上。第 138 行的函数中对类似命令的数量设置了默认限制。CommandNotFound.print_spelling_suggestion(self, word, min_len=3, max_len=15)您可以将该max_len值修改为 30(使用sudo nanogksudo gedit编辑此文件)。

答案2

很可能这 23 个“类似”的命令对你来说不会比“goo”、“god”和“gord”有用多少。大多数 bash'ers 用来查找东西的小技巧是使用手册页,因为搜索是基于内容的,而不仅仅是根据名称。例如,尝试

man -k ftp

如果您发现一个可能或有趣的命令,请通过删除 -k 开关来查看手册页本身:

man sftp

man 有它自己的手册页:

man man

现在你知道为什么了,每当你安装一个新程序或应用程序时,它通常也会为你安装一个手册页。

哦,是的,要搜索尚未安装的手册页,您可能喜欢众多在线手册网站之一,例如这个

相关内容