我希望有一些东西可以与 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
答案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