はじめに

こんにちは!今回はcalコマンドについて解説します。

calは、カレンダーを表示するコマンドです。「今月のカレンダーを見たい」「特定の月の日付を確認したい」という時に便利。terminalから即座にカレンダーを表示できるので、日程調整や日付確認が素早くできます。

シンプルながら、スクリプトで日付計算をする時にも役立つコマンドですよ。

calコマンドとは

calは、指定した月のカレンダーを表示する外部コマンドです。“calendar"の略ですね。

オプションなしで実行すると現在の月を表示、月と年を指定すれば任意の日付のカレンダーを表示できます。スクリプトで日付処理をする時の補助ツールとしても活躍します。

基本構文

1
cal [オプション] [] []

引数がない場合は現在の月を表示します。

主なオプション

オプション 説明
-1 単一月を表示(デフォルト)
-3 前月、現月、翌月の3ヶ月を表示
-m 月曜日を週の最初に表示
-j ユリウス日(通算日数)で表示
-y 年間カレンダーを表示

使用例

例1: 現在の月を表示

1
cal

実行結果:

1
2
3
4
5
6
7
    January 2026
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

現在の月(2026年1月)が表示されます。

例2: 特定の月を表示

1
cal 7 2026

実行結果:

1
2
3
4
5
6
7
     July 2026
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

2026年7月が表示されます。

例3: 3ヶ月表示

1
cal -3

実行結果:

1
2
3
4
5
6
7
   December 2025       January 2026      February 2026
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
   1  2  3  4  5  6           1  2  3  1  2  3  4  5  6  7
 7  8  9 10 11 12 13  4  5  6  7  8  9 10  8  9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31          25 26 27 28 29 30 31

前月、現月、翌月の3ヶ月が表示されます。

例4: 月曜日から開始

1
cal -m

実行結果:

1
2
3
4
5
6
7
     January 2026
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

月曜日が週の最初になります。

例5: ユリウス日表示

1
cal -j

実行結果:

1
2
3
4
5
6
7
      January 2026
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

通算日数が表示されます(1月1日が1など)。

例6: 年間カレンダー

1
cal -y 2026

実行結果:

1
(12ヶ月全てが表示される)

2026年全体のカレンダーが表示されます。

例7: 特定の年だけを指定

1
cal 2026

実行結果:

1
(2026年全体が表示される)

年だけを指定した場合は、その年全体が表示されます。

例8: 2月を複数年表示

1
2
cal 2 2024
cal 2 2025

実行結果:

1
2
(2024年2月)
(2025年2月)

異なる年の同じ月を比較。

例9: 過去のカレンダーを表示

1
cal 12 2000

実行結果:

1
(2000年12月)

過去のカレンダーも表示できます。

例10: 未来のカレンダーを表示

1
cal 1 2050

実行結果:

1
(2050年1月)

未来のカレンダーも表示できます。

Tips・注意点

引数の順序

1
2
3
4
5
# 月と年の順序で指定
cal 12 2025  # 2025年12月

# 誤った順序はエラーになる
cal 2025 12  # エラー

月、年の順序は固定です。

date コマンドと組み合わせ

1
2
3
4
5
# 今月のカレンダーを確認
cal

# 特定月の日数を確認
cal | tail -1

dateと組み合わせて日付処理に活用。

スクリプトでの利用

1
2
3
4
#!/bin/bash
# カレンダー情報をファイルに出力
cal > /tmp/calendar.txt
cat /tmp/calendar.txt

バッチ処理やレポート生成に使用。

環境によるフォーマット差

1
2
3
# 表示フォーマットは環境に依存
# Linuxとmacosで微妙に異なる場合がある
cal

環境によって表示が微妙に異なる場合があります。

実践的な使い方

日付計算を確認する時

1
2
# 今月は何日まで?
cal | tail -1 | awk '{print $NF}'

月の最後の日を取得。

祝日を確認する

1
2
cal 1 2026
# 1月の祝日を確認

月間カレンダーを見て祝日を手動確認。

会議日程を確認する

1
2
cal -3
# 前月、今月、来月のカレンダーで日程を確認

3ヶ月表示で全体的な日程を把握。

スクリプトで日数を計算

1
2
3
4
5
#!/bin/bash
month=2
year=2026
days=$(cal $month $year | tail -1 | awk '{print $NF}')
echo "February 2026 has $days days"

プログラムで月の日数を取得。

まとめ

calコマンドのポイント:

  • カレンダーを表示する
  • 引数なしで現在の月を表示
  • -3: 前月、現月、翌月を表示
  • -y: 年間カレンダーを表示
  • -m: 月曜日から開始
  • -j: ユリウス日を表示
  • スクリプトで日付処理に活用可能
  • よく使う組み合わせ: cal, cal -3, cal [month] [year]

日付の確認、スケジュール管理、スクリプトでの日付計算など、calは意外と活躍場面が多いコマンドですよ!