Czy istnieje korektor literówek do bash?

8

Chciałbym, aby coś podpięło się w błędzie „nie znaleziono polecenia” na bash i zaoferowało przydatną poprawkę.

Na przykład:

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

Byłoby miło, gdyby powiedział:

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

Widziałem, jak ludzie zawierają typowe literówki w skrypcie .bash_profile, takie jak „alias gerp = grep”, ale wydaje mi się, że ktoś prawdopodobnie napisał ogólne rozszerzenie bash, aby naprawić tego rodzaju rzeczy.

Czy ktoś słyszał o takim przedłużeniu?

Brianegge
źródło

Odpowiedzi:

4

Nie znam ogólnego przeznaczenia, ale jest jeden dla nazw katalogów:

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

To jest ze strony podręcznika użytkownika Bash:

Jeśli wyszukiwanie się nie powiedzie, powłoka szuka zdefiniowanej powłoki 
funkcja o nazwie command_not_found_handle. Jeśli ta funkcja istnieje, to jest
wywoływane z oryginalnym poleceniem i argumentami oryginalnego polecenia  
jako swoje argumenty

Może być możliwe użycie tego do robienia tego, co chcesz, ale kod byłby sporym wyzwaniem. Nawiasem mówiąc, na przykład Ubuntu używa tego do wyświetlania pakietów zawierających polecenie, które nie zostało znalezione wraz z instrukcjami instalacji (apt-get).

Wstrzymano do odwołania.
źródło
2

Wygląda na to, że shopt byłby dobrym początkiem.

Wygląda też na to, że zsh ma wbudowaną korektę literówek.

Matthew Talbert
źródło
link do „shopt” stąd wygląda jak pusta strona.
sylvainulg
0

command-not-foundpakiet powinien zapewnić tę funkcję w ostatnich dystrybucjach.

Jeśli nie, możesz wywołać go ręcznie z command_not_found_handle()funkcji.

Inną alternatywą jest to .

eadmaster
źródło