Come abilitare il suggerimento se il comando non è stato trovato (funzione "volevi dire ...") nella shell "bash"?


15

Simile a questa domanda: come rimuovo la funzione "volevi dire ..." nella shell?

Quando si digita male un comando si ottiene qualcosa del tipo:

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

Esiste un plug-in shell per Linux o Ubuntu che consiglia la prima ipotesi e devo solo premere Invio?

Quindi dovrebbe essere come:

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

Quindi ho solo bisogno di premere invio e il comando sudo viene eseguito al posto di sido.


4
la zshshell è un'opzione per te?
AB,

Risposte:


14

Se sei disposto a cambiare shell, zshoffre questo senza plugin:

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

Dai documenti :

CORRECTattiva la correzione ortografica per i comandi e l' CORRECTALLopzione attiva la correzione ortografica per tutti gli argomenti.

% 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

Se premi yquando la shell ti chiede se vuoi correggere una parola, verrà corretta. Se si preme n, sarà lasciato solo. Premendo si ainterrompe il comando e premendo si eriattiva la riga per la modifica, nel caso in cui si accetti che la parola sia scritta in modo errato ma non ti piace la correzione.


Bello, sembra buono! Lo guarderò. Esiste un'altra soluzione che utilizza lo standard / bin / bash?
Stefan Profanter,

1
@SailAvido che non conosco. Bash offre solo correzioni per i percorsi (per l'uso con cd:, cdspello directory in generale:) dirspell.
muru,

sudo apt-get install sl/brew install sl
Kenorb,

@kenorb hell no! Trovo slpiù fastidioso che utile.
Muru,

22

Se zsh non è un'opzione, dai un'occhiata a thefuck

Può essere installato con:

sudo pip install thefuck

Uno degli esempi nel readme è quasi esattamente quello che stai richiedendo:

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

Fa anche altre cose utili come:

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

o

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

Questo e spettacolare!
muru,

Non aiuta , come di solito uso slper punirmi per curare la mia cattiva abitudine di errori di battitura
Kenorb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.