はじめに
Hugoで新しいポストを作成するコマンドは、
1hugo new [path to new file]
ですが、私はフォルダを分けているので
1hugo new posts/21/Q1/0213-[title]
のような長いパスになっていました。いちいち入力するのはめんどくさいし、よく間違えるのでシェルスクリプトを作りました。
1# usage
2./new.sh title
作り方
中身は以下のようになっています。
1title=$1
2year=`date '+%y'`
3quoter=`date '+Q%q'`
4date=`date '+%m%d-'`
5path=posts/$year/$quoter/$date$title/index.md
6hugo new $path
まず、$1
はコマンドライン引数を表しています。ここにタイトルが入ります。
また、このようにすると変数varにコマンドの結果を入れることができます。
1var=`command`
dateコマンドを利用して必要な値を取得し、変数に入れ、$path
で結合しています。
あとはコマンドを実行して新しいポストを生成するだけです。
と思いましたが、macOSで動作しません。macOSのdate
コマンドには、%q
がなくクオータが取得できません。そこで、if-elif-else
を使って書き直しました。
1# useage ./newpost title
2# $1 := titile
3
4title=$1
5year=`date '+%y'`
6month=`date '+%m'`
7date=`date '+%d-'`
8#quoter=`date '+Q%q'` # for Linux, not for macOS
9if [ $month == 01 ] || [ $month == 02 ] || [ $month == 03 ]; then
10 quoter=1
11elif [ $month == 04 ] || [ $month == 05 ] || [ $month == 06 ]; then
12 quoter=2
13elif [ $month == 07 ] || [ $month == 08 ] || [ $month == 09 ]; then
14 quoter=3
15else
16 quoter=4
17fi
18path=posts/$year/Q$quoter/$month$date$title/index.md
19hugo new $path
これで目的を達成できました。