Makefile、タスクという形でコマンド群を容易に再現可能な状態で保存しておける最高のツールだと認識しています。
最近はなんでもかんでもMakefileにコマンドをまとめるのがマイブームです。
が、その容易さゆえに危険なタスクをうっかり実行してしまう、ということがそのうち起こりそうで怖いなあと感じていて、これに対する対策は無いものかと考えていました。
そこで、shellらしく[y,N]で確認がとれるようにしたいという結論に至りました。
コマンド実行時、[y,N]で確認をとるようにする
以下の記述で可能になります。
cmd:
@read -p "Are you sure? [y,N]:" ans; \
if [ "$$ans" = y ]; then \
実行したいコマンド; \
fi
makefileのタスク内のコマンドは1行1行がサブシェル内で実行されるので、readで受け取った値を別箇所で使う際は、明示的にワンライナーとして記述する必要があります。
これで実行時に確認を取ってもらえるようになりました。より安全にMakeのタスクを実行できるようになりましたね。