Есть ли корректор опечаток для Bash?

8

Я хотел бы, чтобы что-то подключилось к ошибке «команда не найдена» в bash и предложило полезное исправление.

Например:

grep-C3  error
bash: grep-C3: command not found

Было бы хорошо, если бы он сказал:

Did you mean: grep -C3 error (Y/n)

Я видел, как люди включали в скрипт .bash_profile общие опечатки, такие как 'alias gerp = grep', но я полагаю, что кто-то, вероятно, написал общее расширение для bash, чтобы исправить подобные вещи.

Кто-нибудь слышал о таком расширении?

brianegge
источник
1
catb.org/~esr/jargon/html/D/DWIM.html
Ричард Хоскинс,

Ответы:

4

Я не знаю общего назначения, но есть один для имен каталогов:

$ shopt -s cdspell
$ cd /usr/ibn
/usr/bin
$ pwd
/usr/bin
$ cd /usr/shar/doc
/usr/share/doc

Это из справочной страницы для Bash:

Если поиск не выполнен, оболочка ищет определенную оболочку 
функция с именем command_not_found_handle. Если эта функция существует, она
вызывается с исходной командой и аргументами исходной команды  
в качестве аргументов

Может быть возможно использовать это, чтобы делать то, что вы хотите, но код будет довольно сложной задачей. Кстати, Ubuntu, например, использует это для отображения пакетов, которые содержат команду, которая не была найдена с инструкциями по установке (apt-get).

Приостановлено до дальнейшего уведомления.
источник
2

Похоже, что Shopt будет хорошим началом.

Кроме того, кажется, что в zsh встроена коррекция опечаток.

Мэтью Талберт
источник
ссылка на «магазин» выглядит как пустая страница отсюда.
sylvainulg
0

command-not-foundпакет должен обеспечить эту функцию в последних дистрибутивах.

Если нет, вы можете вызвать его вручную из command_not_found_handle()функции.

Другая альтернатива это .

eadmaster
источник