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

Я хотел бы, чтобы что-то подключилось к ошибке "команда не найдена" в 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).

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

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

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

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

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

Есть еще один инструмент (с грубым названием, которое можно назвать псевдонимомfixthis), вот что он делает для опубликованного примера:

      kai@PC:~$ grep-C3 error
-bash: grep-C3: command not found
kai@PC:~$ fixthis
grep -C3 error [enter/↑/↓/ctrl+c]

Я только что установил его (в момент разочарования в своей работе, разочарования, не связанного с Unix CLI), поэтому не знаю, насколько он хорош.

Пока это кажется немного медленным, но это работает.

Инструкции здесь: https://ostechnix.com/correct-errors-in-linux-commands/

Краткое описание установки (название инструмента исправлено во избежание ненормативной лексики и оскорблений, поэтому замените первый «x» ниже на «u»):

      pip3 install --user thefxck
emacs ~/.bashrc  # add alias
source ~/.bashrc
grep-C3 error
fixthis
Другие вопросы по тегам