Jak włączyć sugestię, jeśli polecenie nie zostało znalezione (funkcja „miałeś na myśli…”) w powłoce „bash”?

15

Podobne do tego pytania: Jak usunąć funkcję „miałeś na myśli ...” w powłoce?

Podczas błędnego wpisywania polecenia otrzymujesz coś takiego:

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

Czy istnieje wtyczka powłoki dla systemu Linux lub Ubuntu, która zaleca pierwsze zgadywanie, a ja po prostu muszę nacisnąć Enter?

Powinno to wyglądać tak:

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

Muszę tylko nacisnąć Enter, a zamiast sido zostanie wykonane polecenie sudo.

Stefan Profanter
źródło
4
czy zshpowłoka jest dla ciebie opcją?
AB

Odpowiedzi:

14

Jeśli chcesz zmienić powłoki, zshoferuje to bez wtyczek:

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

Z dokumentów :

CORRECTwłącza korekcję pisowni dla poleceń, a CORRECTALLopcja włącza korekcję pisowni dla wszystkich argumentów.

% 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

Jeśli naciśniesz, ygdy powłoka zapyta, czy chcesz poprawić słowo, zostanie ono poprawione. Jeśli naciśniesz n, pozostanie w spokoju. Naciśnięcie aprzerywa polecenie, a naciśnięcie epowoduje ponowne wprowadzenie wiersza do edycji, na wypadek, gdyby zgadzasz się, że słowo jest źle napisane, ale nie podoba ci się poprawka.

muru
źródło
Fajnie, to wygląda dobrze! Spojrzę na to. Czy istnieje inne rozwiązanie wykorzystujące standard / bin / bash?
Stefan Profanter
1
@SailAvid nie o tym wiem. Bash oferuje korekcję tylko ścieżek (do użytku z cd: cdspelllub katalogami ogólnie dirspell:).
muru
sudo apt-get install sl/brew install sl
kenorb
@kenorb hell no! Uważam, że slbardziej irytujące niż przydatne.
muru
22

Jeśli zsh nie jest opcją, spójrz na thefuck

Można go zainstalować z:

sudo pip install thefuck

Jednym z przykładów w pliku Readme jest prawie dokładnie to, o co prosisz:

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

Robi też inne przydatne rzeczy, takie jak:

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

lub

 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
źródło
To jest niesamowite!
muru
Nie pomaga , ponieważ zwykle używam sldo karania siebie, aby wyleczyć mój zły nawyk
błędnego pisania