!$
前のコマンドの最後の単語に展開されます。
cat foo/is/a/very/long/path/to/bar.c
rm !$
または:
git diff foo/bar.c
git checkout !$
あなたの例はたまたま最後の単語を繰り返すだけだったので、 !$
うまくいきました。実際に繰り返したい引数がたくさんあり、最初の単語だけを変更したい場合は、 !*
を使用できます 、ゼロ番目を除く前のコマンドのすべての単語に展開されます。
bash
の「HISTORY EXPANSION」セクションを参照してください。 マンページ。そこには多くの柔軟性があります。
Ctrl +a 行頭に移動してから Alt +日 最初の単語を削除します。
実際に高速になるかどうかはわかりませんが、この記事、特にポイント #.3 を参照してください:
<ブロック引用>- ^str1^str2^ を使用して、前のコマンドの文字列を置き換えます
次の例では、最初に ls コマンドを実行してファイルを確認しています。後で、ファイルの内容を表示したいことに気付きました。ファイル名全体をもう一度入力する代わりに、前のコマンドの「ls」を「cat」に置き換えるだけで済みます。以下に示します。
$ ls /etc/cron.daily/logrotate
$ ^ls^cat^
cat /etc/cron.daily/logrotate