GNU date でのみ動作する。macOS 等にインストールされている BSD date では動作しない。
# 今月初め
$ echo $(date +"%Y%m%d" -d"`date +"%Y%m01"`")
20170901
# 先月初め
$ echo $(date +"%Y%m%d" -d"`date +"%Y%m01"` 1 month ago")
20170801
# 来月初め
$ echo $(date +"%Y%m%d" -d"`date +"%Y%m01"` + 1 month")
20171001
# 今月終わり
$ echo $(date +"%Y%m%d" -d"`date +"%Y%m01"` 1 days ago + 1 month")
20170930
# 先月終わり
$ echo $(date +"%Y%m%d" -d"`date +"%Y%m01"` 1 days ago")
20170831
# 来月終わり
$ echo $(date +"%Y%m%d" -d"`date +"%Y%m01"` 1 days ago + 2 month")
20171031
ちなみに月初めではなく月の2日目を表示するためのコマンドは以下の通りである。
# 今月2日目
$ echo $(date +"%Y%m%d" -d"`date +"%Y%m02"`")
20170902