シェルについて、まだまだ知らないことがあるという話
シェルに知らない機能はもう無い。そう思ってる時期が僕にもありました。
この記事読んでて、
# ブランチがmasterならば branch="$(git symbolic-ref HEAD 2>/dev/null)" || "$(git describe --contains --all HEAD)" if [ "${branch##refs/heads/}" = "master" ]; then # コミット履歴があるならばmasterへのCommitはfail # コミット履歴がないならばmasterへのFirst Commitだけは許す git rev-list --max-parents=0 HEAD > /dev/null 2>&1 if [ "$?" = "0" ]; then echo "Do not commit on the master branch!" exit 1 fi fi
上記のプログラムが出てきたので、${branch##refs/heads}
てなんや?と思ったら
変数展開時に文字列の操作ができるらしい。正規表現も使えるぽいからこれは便利。
git hooks とかdockerfileとかもそうだけど、いろんな書き方やコマンドが使われてるので、おまじないだと思わずに逐一調べていくと知識や表現の幅が広がるなと感じました。
まだまだ道は長い。