履歴から連続コマンドを実行するには?

履歴から連続コマンドを実行するには?

以前に実行された4つのコマンドシーケンスを実行したいとしましょう。コマンド履歴の最初の項目が432の場合は、次のことができます。

$ !432; !433; !434; !435

これを達成するより効率的な方法があるかどうか疑問に思います。

ベストアンサー1

最近実行されたコマンドを参照する場合、より効率的なアプローチは負の数で参照することです。

!-4; !-3; !-2; !-1

また、これを行うと、最後の履歴エントリに完全なコマンドチェーンが含まれるため、Repeat itを使用できます!!


編集する: この強力な組み込み機能にまだ慣れていない場合fcザイルズが言及。 (を使用しますhelp fc。)負の数も使用できることがわかったので、上記の操作を使用できます。

eval "`fc -ln -4 -1`"

しかし、これには注意があります。その後、そのeval行は最後のコマンドとして履歴に保存されます。したがって、これをやり直すとループに閉じ込められます。

より安全なアプローチは、基本的なfc作業モードを使用することです。つまり、選択したコマンド範囲をエディタに渡し、終了後に実行します。努力する:

 fc -4 -1

コマンド範囲の順序を逆にすることもできます。fc -1 -4

おすすめ記事