web-dev-qa-db-ja.com

同様のコマンドをリストする方法はありますか?

コマンド名を間違って書くと、bashはしばしばこれを行います:

septi@norbert:~$ good
No command 'good' found, did you mean:
 Command 'gold' from package 'binutils' (main)
 Command 'gmod' from package 'gmod' (universe)
 Command 'goo' from package 'goo' (universe)
 Command 'god' from package 'god' (universe)
 Command 'geod' from package 'proj-bin' (universe)
 Command 'gord' from package 'scotch' (universe)
good: command not found

または時々これはこれをします:

septi@norbert:~$ nftp
No command 'nftp' found, but there are 23 similar ones
nftp: command not found

これらの23の同様のコマンドを表示するようにbashに依頼する方法はありますか?また、アプリケーションを実行する代わりに、_ftpなどの、まだインストールされていないコマンドを含む、同様のコマンドを表示する方法はありますか?

7
Septagram

Bashは、同様のコマンドを探すためにコマンド/usr/lib/command-not-foundを使用します。これは、PythonのCommandNotFoundモジュールを使用します。

端末に表示される出力(この場合はstderr)もこのモジュールから生成されます。このモジュールの場所は、Ubuntu 14.04以降では/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.pyです。行138の関数CommandNotFound.print_spelling_suggestion(self, Word, min_len=3, max_len=15)には、同様のコマンドの数にデフォルトの制限が設定されています。max_len値を30に変更できます(このファイルを編集するには、Sudo nanoまたはgksudo geditを使用します)。

7
ignite

23の「類似」コマンドは、「goo」、「god」、および「gord」よりもはるかに使いにくいと思われます。ほとんどのbash'ersが物事を見つけるために使用する小さなトリックは、検索が名前だけではなくコンテンツベースであるため、manページを使用することです。たとえば、試してみてください

man -k ftp

可能性のあるコマンドまたは興味をそそるコマンドが見つかった場合は、-kスイッチをドロップしてmanページ自体を見てください。

man sftp

男性はそれ自身のマニュアルページを持っています:

man man

これで、新しいプログラムまたはアプリケーションをインストールするたびに、マニュアルページも頻繁にインストールされる理由がわかりました。

そうそう、まだインストールしていないmanページを検索したり、manページを検索したりするには、 this one などの多くのオンラインmanサイトのいずれかをお勧めします。

3
fabricator4