有适用于 bash 的拼写错误修正器吗?

有适用于 bash 的拼写错误修正器吗?

我希望有一些东西可以与 bash 上的“未找到命令”错误挂钩并提供有用的修复程序。

例如:

grep-C3  error
bash: grep-C3: command not found

如果它说:

Did you mean: grep -C3 error (Y/n)

我见过人们在 .bash_profile 脚本中包含常见的拼写错误,例如“alias gerp=grep”,但我想有人可能已经为 bash 编写了一个通用扩展来修复此类问题。

有人听说过这样的扩展吗?

答案1

我不知道通用的,但有一个用于目录名称的:

$ shopt -s cdspell
$ cd /usr/ibn
/usr/bin
$ pwd
/usr/bin
$ cd /usr/shar/doc
/usr/share/doc

这是来自 Bash 的手册页:

如果搜索不成功,shell 将搜索已定义的 shell
名为 command_not_found_handle 的函数。如果该函数存在,则
使用原始命令和原始命令的参数调用  
作为其参数

也许可以用它来做你想做的事,但代码会相当有挑战性。顺便说一句,例如,Ubuntu 使用它来显示包含安装说明 (apt-get) 中未找到的命令的软件包。

答案2

好像购物将会是一个好的开始。

此外,似乎有内置的拼写错误纠正功能。

答案3

command-not-found软件包应该在最近的发行版中提供此功能。

如果没有,您可以从函数中手动调用它command_not_found_handle()

另一种选择是

答案4

还有另一个工具(名称粗鲁,可以用作别名fixthis),以下是它对已发布示例的作用:

kai@PC:~$ grep-C3 error
-bash: grep-C3: command not found
kai@PC:~$ fixthis
grep -C3 error [enter/↑/↓/ctrl+c]

我刚刚才安装它(出于对工作感到沮丧,这种沮丧与 Unix CLI 无关),所以我不知道它有多好。

到目前为止它确实看起来有点慢,但它确实有效。

说明在这里:https://ostechnix.com/correct-errors-in-linux-commands/

安装摘要(已更正工具名称以避免亵渎和冒犯,因此将下面的第一个“x”替换为“u”):

pip3 install --user thefxck
emacs ~/.bashrc  # add alias
source ~/.bashrc
grep-C3 error
fixthis

相关内容