閃光☆法師のブログ。

アニメとゲームとICT、そして人生哲学について徒然なるままに。

シェルについて、まだまだ知らないことがあるという話

シェルに知らない機能はもう無い。そう思ってる時期が僕にもありました。

qiita.com

この記事読んでて、

# ブランチが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}てなんや?と思ったら

qiita.com

変数展開時に文字列の操作ができるらしい。正規表現も使えるぽいからこれは便利。

git hooks とかdockerfileとかもそうだけど、いろんな書き方やコマンドが使われてるので、おまじないだと思わずに逐一調べていくと知識や表現の幅が広がるなと感じました。

まだまだ道は長い。