Bash
Linux

Bash で月初と月末を表示する方法

More than 1 year has passed since last update.

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