Como ativar a sugestão se o comando não for encontrado (“você quis dizer…”) no shell “bash”?

15

Semelhante a esta pergunta: Como faço para remover o "você significa ... "recurso no shell?

Ao digitar errado um comando, você recebe algo como:

[email protected]:~# 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
[email protected]:~# 

Existe um plugin do shell para o linux ou ubuntu que recomenda o primeiro palpite e eu só tenho que pressionar enter?

Então deve ser assim:

[email protected]:~# 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.

    
por SailAvid 06.05.2015 / 15:38

2 respostas

14

Se você estiver disposto a trocar shells, zsh oferece isso sem plugins:

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

Dos documentos :

  

CORRECT ativa a correção ortográfica para comandos e   A opção CORRECTALL 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 y quando o shell perguntar se você deseja corrigir   palavra, será corrigido. Se você pressionar n , ele será deixado em paz.   Pressionar a anula o comando e pressionar e traz a linha   para edição novamente, no caso de você concordar que a palavra está escrita errada, mas você   não gosto da correção.

    
por muru 06.05.2015 / 15:47
21

Se o zsh não for uma opção, dê uma olhada em 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 algumas 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.
...
    
por devnall 06.05.2015 / 19:40