有没有列出类似命令的方法?

当您将命令名称写错时,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

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

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

很可能23个“相似”的命令对你来说不会比’goo’,’god’和’gord’更有用。 大多数bash’ers用来查找事物的小技巧是使用手册页,因为搜索是基于内容而不仅仅是名称。 例如,试试

 man -k ftp 

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

 man sftp 

man有它自己的手册页:

 man man 

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

哦,是的,要搜索你还没有安装的手册,你可能会喜欢这个在线人工网站中的一个 。