Как включить предложение, если команда не найдена (вы имели в виду…) в оболочке «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, и вместо sido выполняется команда sudo.

Стефан Профантер
источник
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
Кенорб
@ Кенорб, черт возьми, нет! Я нахожу 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.
...
devnall
источник
Это круто!
Муру
Не помогает , как я обычно использую, slчтобы наказать себя, чтобы вылечить мою дурную привычку к
опечаткам