Esiste un correttore di errore di battitura per bash?


8

Vorrei che qualcosa si agganciasse all'errore "comando non trovato" su bash e offrisse una soluzione utile.

Per esempio:

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

Sarebbe bello se dicesse:

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

Ho visto persone includere errori di battitura comuni nello script .bash_profile come 'alias gerp = grep', ma immagino che qualcuno abbia probabilmente scritto un'estensione generale per bash per risolvere questo genere di cose.

Qualcuno ha sentito parlare di una tale estensione?


Risposte:


4

Non ne conosco uno generico, ma ce n'è uno per i nomi delle directory:

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

Questo è dalla pagina man di Bash:

Se la ricerca non ha esito positivo, la shell cerca una shell definita 
funzione denominata command_not_found_handle. Se quella funzione esiste, lo è
invocato con il comando originale e gli argomenti del comando originale  
come i suoi argomenti

Potrebbe essere possibile utilizzarlo per fare quello che vuoi, ma il codice sarebbe piuttosto una sfida. A proposito, Ubuntu, ad esempio, lo usa per visualizzare pacchetti che contengono il comando che non è stato trovato con le istruzioni di installazione (apt-get).


2

Sembra che Shopt sarebbe un buon inizio.

Inoltre, sembra che zsh abbia una correzione di errore di battitura integrata.


il link a "shopt" sembra una pagina vuota da qui.
sylvainulg,

0

il command-not-foundpacchetto dovrebbe fornire questa funzione nelle distro recenti.

In caso contrario, è possibile richiamarlo manualmente dalla command_not_found_handle()funzione.

Un'altra alternativa è questa .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.