LinuxターミナルでBashコマンド履歴を選択的にナビゲートする方法[複製]


9

端末では、上下の矢印キーを使用して、使用したコマンドの履歴をナビゲートすることを誰もが知っています(または知っておくべきです!)。

端末を日常的に使用する場合、コマンド履歴は多くの異なるコマンドの長いリストになる可能性が高いため、ナビゲーションが容易ではなくなります。例として、1か月前にiwconfig決定されたパラメーターのセットでを使用したとしましょう(前述のように、これは単なる例であり、今は変更する必要はありません)。その特定のコマンドをどのように呼び出すことができますか?何百もの履歴コマンドをナビゲートする必要なく、すべての引数とパラメータを使用して?

history以前に使用したコマンドのリストを取得し、そのリストでnコマンド!nを再実行するために使用できることは知っていますが、履歴が大きくなると、あまり実用的ではありません。

理想的なのは、ホットキーを使用して履歴をナビゲートできるようにすることですが、コマンドラインですでに入力した内容を含むインスタンス間だけです。ので、私の例では、入力されたした後iwconfig、ただで始まるエントリをナビゲートするために、いくつかのキー(多分PgUpキーとPgDown?)を使用してiwconfigを

それが不可能な場合は、またのようなリスト印刷するにはいいだろうhistoryやるのが、それが唯一の私はすでに入力したものを含んでいます(私はと思われるhistorygrepコマンドが含まれているが、私は正しい構文についてはよく分かりません)。しかし、以前のホットキーソリューションが最適なオプションです。

回答:


12

Ctrl+ Rを使用して履歴を検索し、検索文字列を入力できます(たとえば、iwを見つけるためiwconfig)。その後、上矢印キーと下矢印キーを使用してその時点で履歴をナビゲートするか、もう一度Ctrl+を押しRて前の発生を見つけることができます。


私はそれがうまくいくのをよく理解していることを確信していない。Ctrl + Rを押してと入力するとiwconfig、それが含まれているインスタンスが表示されます(必ずしも最新である必要はありません)。矢印キーを使用すると、文字列が含まれているものだけでなく、すべての項目に移動します。履歴の特定のポイントを選択してナビゲーションを開始するように見えます(上方向キーのように下から開始するのではなく)が、それ以外は、ナビゲーションはいつもと同じです。私は何か見落としてますか?
Sekhemty 2013

どうでもいいと思いますが、konsole念のためターミナルエミュレータを使っています。
Sekhemty 2013

申し訳ありませんが、以前の一致を見つける方法についての回答を更新しました。
Stefan Seidel、2013年

5

少し練習して、回避策の使用方法を見つけました。

フィルターされたリストを出力するために正しい構文を一致させ、それを使用しましたhistory | grep iwconfig(結局それほど難しくありませんでした)。出力を使用!nして、読みやすくなったフィルター済みリストで使用できます。


3
追加のトリック:を使用し!n:pます。これにより、古いコマンドが実行されずに出力され、履歴に戻されます。次に、上矢印を1回押してそこに移動します。これで編集できます。このような他の愚かなトリックがたくさんあります:ss64.com/bash/history.html
Wandering Logic


2

「ctrl + r」を押して、検索文字列を入力します。

あなたが探しているものでない場合は、もう一度「Ctrl + R」を押してください

見つかった場合は、Enterキーを押して実行するか、右矢印->キーを押して編集してから使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.