Як увімкнути пропозицію, якщо команда не знайдена ("ви мали на увазі ..." функцію) в оболонці "bash"?


15

Подібно до цього питання: Як я видалити функцію "ти мав на увазі ..." в оболонці?

Під час неправильного введення команди ви отримуєте щось на кшталт:

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

Чи є плагін оболонки для Linux або ubuntu, який рекомендує першу здогадку, і мені просто потрібно натиснути клавішу Enter?

Тож має бути так:

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

Тому мені просто потрібно натиснути клавішу Enter і команда sudo виконується замість sido.


4
чи zshоболонка варіант для вас?
AB

Відповіді:


14

Якщо ви готові перемикати оболонки, zshпропонуйте це без плагінів:

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

З документів :

CORRECTвмикає корекцію орфографії для команд, а CORRECTALLопція включає корекцію орфографії для всіх аргументів.

% 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

Якщо ви натиснете, yколи оболонка запитає, чи хочете виправити слово, воно буде виправлено. Якщо натиснути n, це залишиться в спокої. Натискання aскасовує команду та натискання знову eвводить рядок для редагування, якщо ви погоджуєтесь, що слово написано неправильно, але ви не любите виправлення.


Приємно, це виглядає добре! Поглянемо на це. Чи є інше рішення за допомогою стандарту / bin / bash?
Стефан Профантер

1
@SailAvid не те, що я знаю. Bash пропонує лише виправлення для шляхів (для використання з cd: cdspellабо каталогів загалом dirspell:).
муру

sudo apt-get install sl/brew install sl
kenorb

@kenorb чорт ні! Я вважаю slбільше дратівливим, ніж корисним.
муру

22

Якщо zsh не є варіантом, подивіться на thefuck

Його можна встановити за допомогою:

sudo pip install thefuck

Один із прикладів у readme - це майже саме те, що ви запитуєте:

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

Це також робить деякі інші зручні речі, такі як:

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

або

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

Це круто!
муру

Не допомагає , як я зазвичай використовую slдля покарання себе, щоб вилікувати свою шкідливу звичку
занурюватися
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.