へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)! #vZkt8fc6J

シェルスクリプトの中でさっきインタラクティブシェルの中で打ったやつをrerunするスクリプト書いた

かいた

!!とかCtrl + PとかUpとか便利だけど
そういうのじゃなくてシェルスクリプトから呼び出すやつ

zshしか確認してないので、他のシェルで使えるかどうかはわからない
$ chmod +x rerun_and_plusを忘れずに

もっとスマートなやり方があったら教えてください

つかいかた

f:id:haruharu1:20160307124320p:plain

ソース

rerun_and_plus

#!/bin/zsh -i
echo '#before#';
rerun=$(history | tail -n 2 | head -n 1 | cut -c 8-)
zsh -c $rerun
echo '#after#';

1行目

シェルスクリプトzshインタラクティブなやつで実行するシバン

2行目

ここに「前のコマンドをrerunする前にやりたいこと」を書く

今回のぼくの目的がこれ。
普段は、テストを走らせるときにデータベースにデータを保存しておくが、
マイグレーションかけたときだけはデータベースが不一致になるから、前のデータベースをぶち壊してからやるべきなんだけど
間違えて実行しちゃったときにやる

3行目

このコマンド自体が、ヒストリーの最終履歴になるので、履歴の最後から2番目をとるために
history | tail -n 2 | head -n 1
cutなんたらは履歴の番号を消してるだけ

4行目

zshでらん!

5行目

(略)

追記(2016/08/27)

結局全然使ってない/(^o^)\