Cara mengaktifkan saran jika perintah tidak ditemukan (fitur "maksud Anda ...") di shell "bash"?

15

Mirip dengan pertanyaan ini: Bagaimana cara menghapus fitur "maksud Anda ..." di shell?

Saat salah mengetik perintah Anda mendapatkan sesuatu seperti:

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

Apakah ada plugin shell untuk linux atau ubuntu yang merekomendasikan tebakan pertama dan saya hanya perlu menekan enter?

Jadi harus seperti:

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

Jadi saya hanya perlu menekan enter dan perintah sudo dijalankan bukan sido.

Stefan Profanter
sumber
4
apakah zshshell adalah pilihan untuk Anda?
AB

Jawaban:

14

Jika Anda bersedia mengganti shell, zshtawarkan ini tanpa plugin:

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

Dari dokumen :

CORRECTmengaktifkan koreksi ejaan untuk perintah, dan CORRECTALLopsi mengaktifkan koreksi ejaan untuk semua argumen.

% 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

Jika Anda menekan yketika shell bertanya apakah Anda ingin memperbaiki kata, itu akan diperbaiki. Jika Anda menekan n, itu akan dibiarkan sendiri. Menekan amembatalkan perintah, dan menekan emembawa baris ke atas untuk mengedit lagi, jika Anda setuju kata tersebut salah dieja tetapi Anda tidak suka koreksi.

muru
sumber
Bagus, ini terlihat bagus! Akan melihatnya. Apakah ada solusi lain menggunakan standar / bin / bash?
Stefan Profanter
1
@SailAvid bukan yang saya tahu. Bash hanya menawarkan koreksi untuk jalur (untuk digunakan dengan cd: cdspell, atau direktori pada umumnya: dirspell).
muru
sudo apt-get install sl/brew install sl
kenorb
@kenorb sih tidak! Saya menemukan sllebih mengganggu daripada berguna.
muru
22

Jika zsh bukan pilihan, lihat saja thefuck

Itu dapat diinstal dengan:

sudo pip install thefuck

Salah satu contoh dalam readme hampir persis seperti yang Anda minta:

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

Itu juga melakukan beberapa hal berguna lainnya seperti:

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

atau

 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.
...
sial
sumber
Ini Luar Biasa!
muru
Tidak membantu , seperti yang biasa saya gunakan sluntuk menghukum diri saya sendiri untuk menyembuhkan kebiasaan buruk saya yang salah ketik
kenorb