Como ativar a sugestão se o comando não foi encontrado (recurso "você quis dizer ...") no shell "bash"?

15

Semelhante a esta pergunta: Como removo o recurso "você quis dizer ..." no shell?

Ao digitar incorretamente um comando, você obtém algo como:

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 um plug-in shell para linux ou ubuntu que recomenda o primeiro palpite e eu apenas tenho que pressionar enter?

Então deve ser assim:

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

Então, eu só preciso pressionar enter e o comando sudo é executado em vez de sido.

Stefan Profanter
fonte
4
o zshshell é uma opção para você?
AB

Respostas:

14

Se você deseja trocar de shell, zshoferece isso sem plugins:

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

Dos documentos :

CORRECTativa a correção ortográfica para comandos e a CORRECTALLopção ativa a correção ortográfica para todos os argumentos.

% 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 você pressionar yquando o shell perguntar se você deseja corrigir uma palavra, ela será corrigida. Se você pressionar n, ele será deixado sozinho. Pressionar aaborta o comando e pressionar etraz a linha para edição novamente, caso você concorde que a palavra está escrita incorretamente, mas não goste da correção.

muru
fonte
Bom, isso parece bom! Vai olhar para isso. Existe outra solução usando o padrão / bin / bash?
Stefan Profanter
11
@SailAvid não que eu saiba. O Bash oferece apenas correção para caminhos (para uso com cd:, cdspellou diretórios em geral dirspell:).
muru
sudo apt-get install sl/brew install sl
kenorb 7/15
@kenorb inferno não! Acho slmais irritante do que útil.
muru
22

Se zsh não for uma opção, dê uma olhada no thefuck

Pode ser instalado com:

sudo pip install thefuck

Um dos exemplos no leia-me é quase exatamente o que você está solicitando:

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

Ele também faz outras coisas úteis, como:

 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
fonte
Isso é incrível!
muru
Não ajuda , como eu costumo usar slpara punir meu-auto, a fim de curar meu mau hábito de erros de digitação
kenorb