hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

シェルで前回使った引数を使う

最近、itamae, serverspecと格闘中です。

production, stagingでうまく切り替えてroleの管理ができないか。

なんて考え中です。うまいことできないかしら。。

本題ですがzshなどを使っているケースで

gd aaa bbb
ga aaa bbb

※gdはgit diff , ga は git addのaliasです。

などのコマンドを打つときに

前回使った引数を使いまわしたいシーンが度々あります。

mkdir と cdを使うケースの場合は

mkdir aaa
cd $_

引数がひとつの場合は$_ を使うことで乗りきれるのですが

複数ある場合はこれではうまくいきません。

調べていると

  • !!で前回のコマンドのhistoryを使えて
  • !$で前回の引数の最後の値
  • !:1で前回の引数の最初の値

が使えるので

gd aaa bbb
ga !:1-$

と打つことで複数の引数に対応できるようです。

ただ$_とは違うので一旦展開が差し込まれる挙動が省略されて欲しいところです。

少し話は変わって

yum install hogehoge

と打った時に

sudo忘れなんてこともありますが

!!を使うことで

sudo !!

とすると前回のコマンドをsudoで実行ということも簡単にできそうです。

でもやっぱり C-p、C-a でsudoと打ってしまいそうですが。。