申し訳ありません。このタイトルは私がデザインしたタイトルの中で最もエレガントではありません。
しかし、多くの人がこれについて疑問に思うと思いますが、私の質問は詐欺かもしれません。まだ見つかっていないとしましょう。
「上にスクロール」と言うと、キーボードの「上矢印」キーを使用することを意味します。このキーを押すと、最新のコマンドから始まり、履歴が上にスクロールします。
したがって、後で30個程度のコマンドを見つけて実行します。その後、元の後ろのコマンドを実行したいと思います。これを行う簡単な方法はありますか?それともBASHに精通している人はどうやってこれを行いますか?
答え1
Ctrlorunコマンドの代わりに+を使用するEnterと、履歴からコマンドを実行し、bash履歴の先頭に戻るのではなく、次のコマンドをキューに追加します。
答え2
Jon Reinholdの答えは素晴らしいですが、より強力なソリューションを提案したいと思います。 Jonの回答にある問題についてもコメントしましたが、直接コメントするには評判が足りませんので、@Jon Reinhold、この記事を読んだら下記にコメントを投稿してください。
fc
Bashには、bash履歴リストの行番号を引数として使用するコマンドが含まれています。次に、この行をテキストとして使用してデフォルトエディタを開きます。この時点で、これらの行を編集することを選択できます。その後、エディタを終了すると、bashは次の行を実行します!
編集できる例は、 "; read -p "next ..."など、最後の行を除くすべての行に追加することです。これにより、bashは各行を実行して続行する前にメッセージを表示します。
Jon Reinholdによるコメント:素晴らしい答えです。ただし、ユーザーが bash 変数 HISTControl を include に設定すると、
erasedups
実行後にC-o
ユーザーは混乱します。なぜなら、履歴で予想される次のコマンドの代わりに次のコマンドが表示されるからです。表示されます。これは、bashがコマンドが実行された元のインスタンスを削除するため、後続のすべてのコマンドが1行上に移動し、履歴リストからより低いインデックス番号に移動されるためです。
答え3
目的の動作を達成するもう1つの方法は、bash readlineショートカット(そのうちの1つだと思いますCTRL)oとbash履歴の検索に慣れることです。
過去の検索
CTRL- rbash コマンド履歴検索に移動し、検索するコマンドの入力を開始すると、bash は自動的にそのコマンドを完了します。オートコンプリート機能は本当に良いですね。入力行にあるときに実行したいENTERコマンドを実行できます。またはCTRL- を押してeカーソルをコマンドラインの末尾に移動し、履歴検索モードを終了します。
CTRL-eこの時点で素晴らしい点は、履歴バッファがコマンドのコンテキストに基づいて設定されることです。次のコマンドと前のコマンドは、履歴検索で見つかった行の前後に実行されたコマンドです。上矢印または下矢印を押すと、次のコマンドが表示されます。
履歴検索は非常に強力で、上矢印を使用してコマンドに戻るのを防ぐのに最適な方法です。クイック履歴検索を保存場所Jonが上記で指摘したように手動で履歴を検索すると、続行できますCTRL。o
Readline ショートカット
全体的なbash-fuを改善したい場合は、矢印キーのreadlineショートカットを試してみることをお勧めします。より便利でタイピング速度を向上させることができますが、もちろんYMMVです。これにはさらにいくつかあります。
- CTRL-n次のコマンド(下矢印と同じ)
- CTRL-p前のコマンドの場合(上矢印と同じ)
- CTRL- b1文字後ろに移動(左矢印と同じ)
- CTRL- f1文字前に移動(右矢印と同じ)
私の考えでは、これらのreadlineショートカット( - 行のCTRL始まりと - 行の終わりとともに)はコマンドラインの速度と効率を向上させます。aCTRLe