Wie kann ich den Vorschlag aktivieren, wenn der Befehl in der Bash-Shell nicht gefunden wurde (Funktion "Meinten Sie ...")?

15

Ähnlich wie bei dieser Frage: Wie entferne ich das Feature "Meinten Sie ..." in der Shell?

Wenn Sie einen Befehl falsch eingeben, erhalten Sie Folgendes:

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

Gibt es ein Shell-Plugin für Linux oder Ubuntu, das die erste Vermutung empfiehlt und ich muss nur die Eingabetaste drücken?

So sollte es sein:

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

Ich muss also nur die Eingabetaste drücken und der Befehl sudo wird anstelle von sido ausgeführt.

Stefan Profanter
quelle
4
Ist die zshShell eine Option für Sie?
AB

Antworten:

14

Wenn Sie bereit sind, Shells zu wechseln, zshbietet dies ohne Plugins:

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

Aus den Dokumenten :

CORRECTAktiviert die Rechtschreibkorrektur für Befehle und die CORRECTALLOption aktiviert die Rechtschreibkorrektur für alle Argumente.

% 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

Wenn Sie drücken, ywenn die Shell Sie fragt, ob Sie ein Wort korrigieren möchten, wird es korrigiert. Wenn Sie drücken n, wird es in Ruhe gelassen. Durch Drücken von wird ader Befehl abgebrochen, und durch Drücken von wird edie Zeile erneut zum Bearbeiten angezeigt, falls Sie zustimmen, dass das Wort falsch geschrieben ist, die Korrektur jedoch nicht gefällt.

muru
quelle
Schön, das sieht gut aus! Werde es anschauen. Gibt es eine andere Lösung mit dem Standard / bin / bash?
Stefan Profanter
1
@SailAvid das kenne ich nicht. Bash bietet nur Korrekturen für Pfade an (zur Verwendung mit cd: cdspelloder Verzeichnissen im Allgemeinen:) dirspell.
muru
sudo apt-get install sl/brew install sl
Kenorb
@kenorb hölle nein! Ich finde es sleher ärgerlich als nützlich.
muru
22

Wenn zsh keine Option ist, schau dir thefuck an

Es kann installiert werden mit:

sudo pip install thefuck

Eines der Beispiele in der Readme-Datei entspricht fast genau Ihren Anforderungen:

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

Es macht auch einige andere nützliche Dinge wie:

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

oder

 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
quelle
Das ist fantastisch!
muru
Hilft nicht , da ich mich normalerweise selbst slbestrafe, um meine schlechte Angewohnheit des Tippfehlers zu heilen
Kenorb