コマンド名を間違って書くと、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
などの、まだインストールされていないコマンドを含む、同様のコマンドを表示する方法はありますか?
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
を使用します)。
23の「類似」コマンドは、「goo」、「god」、および「gord」よりもはるかに使いにくいと思われます。ほとんどのbash'ersが物事を見つけるために使用する小さなトリックは、検索が名前だけではなくコンテンツベースであるため、manページを使用することです。たとえば、試してみてください
man -k ftp
可能性のあるコマンドまたは興味をそそるコマンドが見つかった場合は、-kスイッチをドロップしてmanページ自体を見てください。
man sftp
男性はそれ自身のマニュアルページを持っています:
man man
これで、新しいプログラムまたはアプリケーションをインストールするたびに、マニュアルページも頻繁にインストールされる理由がわかりました。
そうそう、まだインストールしていないmanページを検索したり、manページを検索したりするには、 this one などの多くのオンラインmanサイトのいずれかをお勧めします。