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


15

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

弄错命令时,您会得到类似以下内容的信息:

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:~# 

是否有用于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]?

因此,我只需要按Enter键即可执行sudo命令而不是sido。


4
zsh外壳一个选择?
AB

Answers:


14

如果您愿意切换外壳,请zsh提供此功能而无需插件:

$ setopt correct 
$ sido -i
zsh: correct 'sido' to 'sudo' [nyae]? 
y
[sudo] password for muru: 

文档

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

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


很好,看起来不错!会看的。还有使用标准的/ bin / bash解决方案吗?
Stefan Profanter 2015年

1
@SailAvid我不知道。Bash仅提供对路径的更正(用于cdcdspell或一般目录:)dirspell
muru,2015年

sudo apt-get install sl/brew install sl
kenorb 2015年

@kenorb地狱不!我发现sl烦人的事多于有用的事。
muru

22

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

它可以安装:

sudo pip install thefuck

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

 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)
...

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

 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
...

要么

 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.
...

这太棒了!
muru

无济于事,因为我通常会用sl惩罚自己的方式来治好我
犯错的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.