申し訳ありませんが、このタイトルは私がこれまでに考案した中で最もエレガントではありません。
しかし、私は多くの人がこれを不思議に思っていると思います、そして私の質問はだまされているかもしれません...
「上にスクロール」と言うときは、キーボードの「上矢印」キーを使用することを意味します。これにより、最新のコマンドから始めて、履歴が明らかに上にスクロールされます。
ですから、あなたはコマンドをたぶん30コマンド前に見つけて、それを実行します。そして、その後に最初に来たコマンドを実行したい...これを行う簡単な方法はありますか?または、BASHに堪能な方は、これをどのように行うのですか?
でコマンドを実行する Ctrl+o の代わりに Enter 履歴からコマンドを実行し、bash履歴の前に戻るのではなく、次のコマンドをキューに入れます。
Jon Reinholdの答えは素晴らしいですが、私が提案するはるかに強力な解決策があります。私はジョンの答えの落とし穴についてもコメントがありますが、直接コメントできるほどの評判はありません。@ Jon Reinholdがこれを読んだ場合は、以下のコメントをご記入ください。
Bashにはコマンドfc
が含まれています。これは、bash履歴リストの行番号をパラメーターとして受け取ります。次に、これらの行をテキストとして使用してデフォルトのエディターを開きます。その時点で、オプションで行を編集できます。次に、エディターを終了すると、bashはこれらの行を実行します!
編集の例として、最後の行を除くすべての行に "; read -p" next ... "のように追加します。これにより、bashは各行を実行し、続行する前にプロンプトを表示します。
Jon Reinholdへのコメント:正解ですが、ユーザーがbash変数HISTCONTROLにerasedups
を含めるように設定している場合はC-o
履歴に表示される次のコマンドが表示される代わりに、その次のコマンドが表示されるため、ユーザーは混乱します。これは、bashが実行されたコマンドの元のインスタンスを削除したため、その後すべてのコマンドが1行上に移動したためです。履歴リストの1つ低いインデックス番号に。
希望する動作を実現するもう1つの方法は、bash readlineのショートカットに慣れることです。 CTRL-o 私が信じているものです)そしてbashの履歴検索。
CTRL-r bashコマンド履歴検索に移動します。検索しているコマンドの入力を開始すると、bashがコマンドをオートコンプリートします。オートコンプリート機能は本当にかなり良いです。実行するコマンドが入力行にある場合、次のことができます。 ENTER コマンドを実行するにはorを押します CTRL-e カーソルをコマンドラインの最後に移動して、履歴検索モードを終了します。
とクールなこと CTRL-e この時点で、履歴バッファーはコンテキストに応じてこのコマンドに設定されます。次のコマンドと前のコマンドは、履歴検索で見つかった行の直前と直後に実行されるコマンドです。上矢印または下矢印を押して、次のコマンドを取得できます。
履歴検索は非常に強力であり、上矢印を使用して最初にコマンドに戻るのを避けるための優れた方法です。クイック履歴検索により、履歴を手動で検索するlots時間を節約できます。 CTRL-o ジョンが上で指摘したように。
全体的なbash-fuを探している場合は、矢印キーのreadlineショートカットを試してみることをお勧めします。あなたはそれらがより便利でタイピングの速度を上げることができると思うかもしれませんが、もちろんYMMVです。さらにいくつかあります:
これらのreadlineショートカット(および CTRL-a 行頭と CTRL-e 行末)は、コマンドラインimoでの速度と効率を向上させます。