如果在“bash”shell 中找不到命令(“您是指...”功能),如何启用建议?

Ste*_*ter 16 command-line bash

与此问题类似: 如何删除 shell 中的“您的意思是...”功能?

当错误输入命令时,您会得到类似的信息:

root@pc:~# sido
No command 'sido' found, did you mean:
 Command 'sudo' from package 'sudo' (main)
 Command 'sudo' from package 'sudo-ldap' (universe)
sido: command not found
root@pc:~# 
Run Code Online (Sandbox Code Playgroud)

是否有适用于 linux 或 ubuntu 的 shell 插件推荐第一个猜测,我只需要按 Enter 键?

所以它应该是这样的:

root@pc:~# sido
No command 'sido' found, did you mean:
 Command 'sudo' from package 'sudo' (main)
 Command 'sudo' from package 'sudo-ldap' (universe)
sido: command not found
Did you mean 'sudo' [Y/n]?
Run Code Online (Sandbox Code Playgroud)

所以我只需要按回车键就可以执行 sudo 命令而不是 sido。

小智 22

如果 zsh 不是一个选项,请查看thefuck

它可以安装:

sudo pip install thefuck
Run Code Online (Sandbox Code Playgroud)

自述文件中的示例之一几乎正是您所要求的:

? puthon
No command 'puthon' found, did you mean:
  Command 'python' from package 'python-minimal' (main)
  Command 'python' from package 'python3' (main)
zsh: command not found: puthon

? fuck
python
Python 3.4.2 (default, Oct  8 2014, 13:08:17)
...
Run Code Online (Sandbox Code Playgroud)

它还可以做一些其他方便的事情,例如:

? apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

? fuck
sudo apt-get install vim
[sudo] password for nvbn:
Reading package lists... Done
...
Run Code Online (Sandbox Code Playgroud)

或者

? git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master


? fuck
git push --set-upstream origin master
Counting objects: 9, done.
...
Run Code Online (Sandbox Code Playgroud)


mur*_*uru 14

如果您愿意切换外壳,请zsh提供不带插件的:

$ setopt correct 
$ sido -i
zsh: correct 'sido' to 'sudo' [nyae]? 
y
[sudo] password for muru: 
Run Code Online (Sandbox Code Playgroud)

文档

CORRECT打开命令的拼写更正, CORRECTALL选项打开所有参数的拼写更正。

% setopt correct
% sl
zsh: correct `sl' to `ls' [nyae]? y
% setopt correctall
% ls x.v11r4
zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n
/usr/princton/src/x.v11r4 not found
% ls /etc/paswd
zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y
/etc/passwd
Run Code Online (Sandbox Code Playgroud)

如果y在 shell 询问您是否要更正某个单词时按,它将被更正。如果您按n,它将被单独留下。按a中止命令,并按下e带来阵容再次编辑,如果你同意这个词拼写错了,但你不喜欢的修正。