web-dev-qa-db-ja.com

n番目の最後のコマンドにキャレット置換を適用するにはどうすればよいですか?

私は定期的に、ファイルに対して長いコマンドを実行してから、他のコマンドで結果を処理する必要があることに気付きます。次のファイルを処理するために、私は通常、を押して同じコマンドを再実行します Up 必要なコマンドが見つかるまでキーを押し、古いファイル名を新しいファイル名に変更します。

キャレット置換を組み合わせる方法はありますか(^oldfile^newfilen最後のコマンドで?私は(失敗して)n th-lastコマンドを次のように置換にパイプしようとしました:

$ !-4 | ^old^new

もちろん、私は他の提案を受け入れます。これらの小さなショートカットは本当に生産性に役立ちます...

3
Zaid

^foo^barは次の省略形であるため、 クイック置換 で直接行うことはできません。

!!:s/foo/bar/

!!の部分(最後のコマンドを参照)はクイック構文の一部ではありませんが(これがクイック構文の一部です)、できます長い構文を直接使用してから、!!を必要に応じて変更します。

!-4:s/foo/bar/

この投稿 ;で知っている限りの履歴構文について説明しました。最後のセクションには、:s修飾子が含まれています

5
Michael Mrozek

長いコマンドを、ファイル名をパラメーターとして受け取るシェル関数として記述し、必要なときにfunction filenameと入力するだけで済みます。

0
xenoterracide