Есть ли корректор опечаток для 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, чтобы исправить подобные вещи.

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


Ответы:


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()функции.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.