Comment activer la suggestion si la commande est introuvable (fonctionnalité "vouliez-vous dire ...") dans le shell "bash"?

15

Semblable à cette question: Comment supprimer la fonctionnalité "vouliez-vous dire ..." dans le shell?

Lorsque vous tapez mal une commande, vous obtenez quelque chose comme:

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

Existe-t-il un plugin shell pour Linux ou Ubuntu qui recommande la première supposition et je n'ai qu'à appuyer sur Entrée?

Donc ça devrait être comme:

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]?

J'ai donc juste besoin d'appuyer sur Entrée et la commande sudo est exécutée au lieu de sido.

Stefan Profanter
la source
4
le zshshell est-il une option pour vous?
AB

Réponses:

14

Si vous êtes prêt à changer de shell, zshpropose ceci sans plugins:

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

De la documentation :

CORRECTactive la correction d'orthographe pour les commandes et l' CORRECTALLoption active la correction d'orthographe pour tous les arguments.

% 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

Si vous appuyez sur ylorsque le shell vous demande si vous souhaitez corriger un mot, il sera corrigé. Si vous appuyez sur n, il sera laissé seul. Appuyez sur pour aannuler la commande et appuyez sur pour erétablir la ligne d'édition, au cas où vous conviendriez que le mot est mal orthographié mais que vous n'aimez pas la correction.

muru
la source
Bien, ça a l'air bien! Va le regarder. Existe-t-il une autre solution utilisant le standard / bin / bash?
Stefan Profanter
1
@SailAvid pas que je sache. Bash propose uniquement la correction des chemins (à utiliser avec cd:, cdspellou les répertoires en général:) dirspell.
muru
sudo apt-get install sl/brew install sl
kenorb
@kenorb hell non! Je trouve slplus ennuyeux qu'utile.
muru
22

Si zsh n'est pas une option, jetez un oeil à thefuck

Il peut être installé avec:

sudo pip install thefuck

L'un des exemples du fichier Lisez-moi est presque exactement ce que vous demandez:

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

Il fait également d'autres choses pratiques comme:

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

ou

 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.
...
devnall
la source
C'est génial!
muru
N'aide pas , car j'utilise habituellement slpour me punir afin de guérir ma mauvaise habitude de mal orthographier
kenorb