n番目の最後のコマンドにキャレット置換をどのように適用しますか?

n番目の最後のコマンドにキャレット置換をどのように適用しますか?

ファイルに対して長いコマンドを実行し、他のコマンドを使用して結果を処理する必要があることがよくあります。次のファイルを処理するには、通常、必要なUpファイルが見つかるまでキーストロークで同じコマンドを再実行し、古いファイル名を新しいファイル名に変えます。

^oldfile^newfileカラット()を次に置き換える方法はありますか?N最後の注文?私は(失敗した)配管を試しましたNth-last コマンドは、次のように置換を入力します。

$ !-4 | ^old^new

もちろん他の提案にも開いています。この小さなショートカットは実際に生産性を高めるのに役立ちます…

答え1

使用できませんクイック交換直接的なので^foo^bar短縮されています。

!!:s/foo/bar/

その!!部分(最後のコマンドを参照)はクイック構文の一部ではありませんが(それでクイック構文になります)できるより長い構文を使用し、!!必要に応じて修正してください。

!-4:s/foo/bar/

私はできるだけ多くの歴史的文法を説明しました。この投稿;最後の部分には:s修飾子が含まれます。

答え2

ファイル名を引数として使用し、function filename必要に応じて入力するシェル関数で長いコマンドを作成できます。

関連情報