Existe um corretor de erros de digitação para o bash?


8

Gostaria que algo se encaixasse no erro 'comando não encontrado' no bash e ofereça uma correção útil.

Por exemplo:

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

Seria bom se dissesse:

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

Vi pessoas incluirem erros de digitação comuns no script .bash_profile como 'alias gerp = grep', mas acho que alguém provavelmente escreveu uma extensão geral do bash para corrigir esse tipo de coisa.

Alguém já ouviu falar dessa extensão?


Respostas:


4

Eu não sei de um propósito geral, mas existe um para nomes de diretório:

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

Isto é da página de manual do Bash:

Se a pesquisa não for bem-sucedida, o shell procurará um shell definido 
função denominada command_not_found_handle. Se essa função existe, é
invocado com o comando original e os argumentos do comando original  
como seus argumentos

Pode ser possível usar isso para fazer o que você deseja, mas o código seria um grande desafio. A propósito, o Ubuntu, por exemplo, usa isso para exibir pacotes que contêm o comando que não foi encontrado com as instruções de instalação (apt-get).


2

Parece que shopt seria um bom começo.

Além disso, parece que o zsh possui a correção de erros de digitação incorporada.


O link para "shopt" parece uma página em branco a partir daqui.
sylvainulg

0

o command-not-foundpacote deve fornecer esse recurso em distros recentes.

Caso contrário, você pode invocá-lo manualmente a partir da command_not_found_handle()função.

Outra alternativa é essa .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.