「bash」シェルでコマンドが見つからない場合の提案を有効にする方法(「did you mean…」機能)


15

この質問に似ています: シェルの "did you mean ..."機能を削除するにはどうすればよいですか?

コマンドの入力ミスをすると、次のようになります:

root@pc:~# sido
No command 'sido' found, did you mean:
 Command 'sudo' from package 'sudo' (main)
 Command 'sudo' from package 'sudo-ldap' (universe)
sido: command not found
root@pc:~# 

最初の推測を推奨するLinuxまたはubuntu用のシェルプラグインはありますか?Enterキーを押すだけです?

したがって、次のようになります。

root@pc:~# sido
No command 'sido' found, did you mean:
 Command 'sudo' from package 'sudo' (main)
 Command 'sudo' from package 'sudo-ldap' (universe)
sido: command not found
Did you mean 'sudo' [Y/n]?

そのため、Enterを押すだけで、sidoの代わりにsudoコマンドが実行されます。


4
あるzshシェルは、あなたのためのオプション?
AB

回答:


14

シェルを切り替えたい場合は、zshプラグインなしでこれを提供します:

$ setopt correct 
$ sido -i
zsh: correct 'sido' to 'sudo' [nyae]? 
y
[sudo] password for muru: 

ドキュメントから:

CORRECTコマンドのスペル修正をオンにし、 CORRECTALLオプションはすべての引数のスペル修正をオンにします。

% setopt correct
% sl
zsh: correct `sl' to `ls' [nyae]? y
% setopt correctall
% ls x.v11r4
zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n
/usr/princton/src/x.v11r4 not found
% ls /etc/paswd
zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y
/etc/passwd

yシェルが単語を修正するかどうかを尋ねるときにを押すと、単語が修正されます。を押すとn、そのまま残ります。を押すとaコマンドが中止され、押すとeその単語のスペルが間違っていても訂正が気に入​​らない場合に再度編集できるようになります。


いいね、これはよさそうだ!それを見ます。標準の/ bin / bashを使用する別のソリューションはありますか?
ステファン教授

1
@SailAvid知らない。Bashはパスの修正のみを提供します(cdcdspell、または一般的なディレクトリで使用しますdirspell
ムル

sudo apt-get install sl/brew install sl
ケノーブ

@kenorb地獄いや!私が見つけsl便利よりも迷惑。
ムル

22

zshがオプションでない場合は、thefuckを見てください

以下を使用してインストールできます。

sudo pip install thefuck

readmeの例の1つは、ほぼ正確にあなたが要求しているものです。

 puthon
No command 'puthon' found, did you mean:
  Command 'python' from package 'python-minimal' (main)
  Command 'python' from package 'python3' (main)
zsh: command not found: puthon

 fuck
python
Python 3.4.2 (default, Oct  8 2014, 13:08:17)
...

また、次のような他の便利な機能も実行します。

 apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

 fuck
sudo apt-get install vim
[sudo] password for nvbn:
Reading package lists... Done
...

または

 git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master


 fuck
git push --set-upstream origin master
Counting objects: 9, done.
...

これは素晴らしい!
ムル

slタイプミスの悪い習慣を治すために自分を罰するために私が通常使用するので、助けはなりません
ケノーブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.