web-dev-qa-db-ja.com

現在入力されているコマンドに一致するターミナルで以前のコマンドを取得する

一部の端末では、このようなことができます...

コマンドを入力します

nmap -sn 192.168.1.1/24

その後、しばらく端末で他のことを行います。その後、次のように入力できます

nmap

を押します  キーを押すと、入力した文字で始まるすべてのコマンド(この場合はnmapなど)のインデックスが作成されます。

私の例は非常に短いものでしたが、非常に長いコマンドを入力して再度実行したい場合があります。  再び見つかるまで、それはeveryコマンドを通過し、ずっと前に入力した場合はしばらく時間がかかる可能性があります.

とにかくこれをUbuntuのターミナルで動作させる方法はありますか?

7
Ryan Stull

はい、コマンド履歴を検索する非常に簡単な方法があります。ターミナルで、を押します Ctrl-R 検索を開始するには、nmapと入力すると、nmapを使用して最後のコマンドに戻ります。

「nmap」という単語を含む最後のコマンドではなく、過去のさらに別のコマンドが必要ない場合は、 Ctrl-R 何度でも好きなだけ。

19
Robobenklein

これを達成するために使用したい方法は、 Up そして Down Bashの履歴検索のキー。これは、次を.inputrcに追加することで実現できます。

"\e[A": history-search-backward
"\e[B": history-search-forward

シェルをリロードした後、押します Up または Down 空のプロンプトですべてのコマンドをナビゲートし、 Up または Down 入力後nmapは、入力した内容で開始されたすべてのコマンドをナビゲートします。

5
José Luis

私は常にhistoryを使用します。たとえば、入力したすべてのコマンドを表示する方が便利です。

history

しばらく入力したすべてのコマンドを一覧表示します

history | grep nmap

nmapを持つコマンドのみをリストします

history | grep nmap | tail -10

history | grep nmap | head -10

nmapで最後と最初の10個のコマンドをリストします

もう一度コピーして貼り付けてください。

4
JoKeR

Bash(set -o vi)でviモードにいる場合は、コマンドモードに移動できます(を押します Esc)、/whatever_you_wantと入力し、続けて Enter.

It will search whatever you want, and you can scroll with j and k keys. Hit enter when you found the right command.

To be able to type commands when you have hitted Esci(これはviです)を押す必要があります。

「通常の」シェルモードに戻るには、set -o emacsを使用します。

2