2015-09-26 90 views
1

我正在寻找一种方法来纠正bash命令,如果它们拼错了。假设你已经安装了一个叫做“FooBar”的程序,但是你在你的shell中键入了“foobar”(或者foo bar或者FOOBAR或者foebar)。有什么方法可以检查PATH中是否存在类似于您正在查找的内容?纠正拼写错误的命令

我正在考虑编写一个bash脚本来规范用户输入,并使用Levenshtein distance算法来检查他们对PATH中的任何内容进行了输入。但也许已经有东西写出来或者有更好的方法来完成这个任务。

有什么建议吗?

+0

可能已经有解决方案,尝试将问题迁移到superuser.com。 – Barmar

+1

downvote是因为这个问题不应该在这里或另一个原因? –

+0

这是一个有趣的想法,但你会如何将它集成到你的shell?它应该自动执行它认为的*你的意思吗?对于输入'mr',Levenshtein距离与'mv'和'rm'相同! – usr2564301

回答

3

如果问题是大小写敏感只,然后就可以在readline的结构由以下关掉这个功能:

echo "set completion-ignore-case On" >> ~/.inputrc 

然而,如果你正在寻找一些巧妙的机制来执行类似命令(例如使用模糊逻辑)我不建议在命令行中使用这样的工具,因为它可能非常危险。

想象一下,例如在rmv等命令中会发生什么情况?它是RM还是MV? ..只有用户可以回答这个问题。

注意:如果您正在运行Cygwin env,其中区分大小写不是问题,这可能会很有用。在Linux命令中区分大小写。因此,关闭此功能不是一个好主意。

+0

区分大小写不是唯一的问题,我不想自动更正该命令,只需打印最佳替代方案以让用户知道它的写法。无论如何,+ 1是针对区分大小写的“问题”而提出的。 –