我正在尋找一種方法來糾正bash命令,如果它們拼錯了。假設你已經安裝了一個叫做「FooBar」的程序,但是你在你的shell中鍵入了「foobar」(或者foo bar或者FOOBAR或者foebar)。有什麼方法可以檢查PATH中是否存在類似於您正在查找的內容?糾正拼寫錯誤的命令
我正在考慮編寫一個bash腳本來規範用戶輸入,並使用Levenshtein distance算法來檢查他們對PATH中的任何內容進行了輸入。但也許已經有東西寫出來或者有更好的方法來完成這個任務。
有什麼建議嗎?
我正在尋找一種方法來糾正bash命令,如果它們拼錯了。假設你已經安裝了一個叫做「FooBar」的程序,但是你在你的shell中鍵入了「foobar」(或者foo bar或者FOOBAR或者foebar)。有什麼方法可以檢查PATH中是否存在類似於您正在查找的內容?糾正拼寫錯誤的命令
我正在考慮編寫一個bash腳本來規範用戶輸入,並使用Levenshtein distance算法來檢查他們對PATH中的任何內容進行了輸入。但也許已經有東西寫出來或者有更好的方法來完成這個任務。
有什麼建議嗎?
如果問題是大小寫敏感只,然後就可以在readline的結構由以下關掉這個功能:
echo "set completion-ignore-case On" >> ~/.inputrc
然而,如果你正在尋找一些巧妙的機制來執行類似命令(例如使用模糊邏輯)我不建議在命令行中使用這樣的工具,因爲它可能非常危險。
想象一下,例如在rmv等命令中會發生什麼情況?它是RM還是MV? ..只有用戶可以回答這個問題。
注意:如果您正在運行Cygwin env,其中區分大小寫不是問題,這可能會很有用。在Linux命令中區分大小寫。因此,關閉此功能不是一個好主意。
區分大小寫不是唯一的問題,我不想自動更正該命令,只需打印最佳替代方案以讓用戶知道它的寫法。無論如何,+ 1是針對區分大小寫的「問題」而提出的。 –
可能已經有解決方案,嘗試將問題遷移到superuser.com。 – Barmar
downvote是因爲這個問題不應該在這裏或另一個原因? –
這是一個有趣的想法,但你會如何將它集成到你的shell?它應該自動執行它認爲的*你的意思嗎?對於輸入'mr',Levenshtein距離與'mv'和'rm'相同! – usr2564301