CAL(1)

名前
cal - カレンダーを表示する

書式
cal [options] [[[day] month] year]
cal [options] [timestamp|monthname]

読者へのご注意
これは、util-linux 版の cal コマンドのマニュアルである。cal コマンドの実装には、いくつかの系統がある。御使用のディストリビューションが util-linux 版以外の cal コマンドを採用している場合は、 動作やオプションがここで説明しているものとかなり違っているかもしれない。 そういうときは、英語版しかないかもしれないが、お手元の cal コマンドに付属するマニュアルに当たってみていただきたい。

説明
cal は簡単なカレンダーを表示する。 引き数を一つも指定しないと、今月のカレンダーが表示される。

月 (上記 1 番目の書式の month) は、数値 (1-12) で指定してもよく、 現在のロケールの月の名前やその短縮形で指定してもよい。

[訳注]
    逆に言うと、月の名前として January や jan を使いたかったら、ロケールを C か英語にしなければならないということだ。日本語ついて言うと、1 番目の書式、すなわち day month year という形で日付を指定する場合は (day と month は省略できる)、月の名前は使用できない。数値のみが有効である。2 番目の書式で今年の月の名前だけを指定する場合は、"3月" という指定ならできるが、"3" や "三月" や "３月" は使用できない。 日付の指定についての詳しいことは、「パラメータ」セクションをご覧になっていただきたい。

この cal では、グレゴリオ暦とユリウス暦という二つの異なった暦法を併用している。 両者はほぼ同一の暦法だが、グレゴリオ暦は閏年の頻度についてちょっとした補正を行っており、 そうすることで、春分・秋分のような太陽運行上の現象との同期が、より取りやすくなっている。 グレゴリオ暦への改定は、1582 年に導入されたが、 諸国によるその採用は、1923 年までに渡って行われた。cal はデフォルトでは、改暦の施行日を 1752 年 9 月 3 日にしている (訳注: イギリスにおける改暦日だ)。 その日より後は、グレゴリオ暦で表示し、それより前の日付には、ユリウス暦を使用するのである。 改暦に当たっては、暦を太陽運行上の現象と同期させるために、11 日間が取り除かれた。 そのため、1752 年 9 月は、ユリウス暦の日付とグレゴリオ暦の日付が混じっており、2 日の翌日は 14 日である (3 日から 13 日は存在しない)。

もしそうしたければ、遡及グレゴリオ暦とユリウス暦のいずれかを一貫して使用することもできる。 下記の --reform を参照していただきたい。

オプション

-1, --one
    あるひと月のみを表示する (これがデフォルトである)。

-3, --three
    指定された日付を挟む 3 ヶ月を表示する。

-n , --months number
    指定された日付を含む月から始まる number ヶ月を表示する。

-S, --span
    指定された日付を挟む数ヶ月を表示する (訳注: -3 や -n オプションと組み合わせて 'cal -S -3 12 2019', 'cal -S -n 5 2019-12-25' などと使用する)。

-s, --sunday
    日曜日を週の最初の日とする。

-m, --monday
    月曜日を週の最初の日とする。

--iso
    一貫して遡及グレゴリオ暦を表示する。下記の --reform を参照。

-j, --julian
    すべてのカレンダーで年内日付を使う。これは通算日 (ordinal days) とも呼ばれる。通算日は 1 から 366 の範囲である。 このオプションを使っても、グレゴリオ暦からユリウス暦への切り替が行われるわけではない。 それを行うのは、--reform オプションの仕事である。

    通算日を使うグレゴリオ暦が、ユリウス暦と呼ばれることもある。 これは紛らわしいことかもしれない。 日付に関係した習慣には、名前にユリウスを使うものがたくさんあるからだ。 たとえば、通算ユリウス日、ユリウス暦日、天文学的ユリウス日、修正ユリウス日。まだまだある。 このオプションが julian という名前なのは、POSIX 規格で通算日を julian と言うことにしているからだ。とは言え、cal では暦法としてのユリウス暦もやはり使用していることに気をつけていただきたい。 上記「説明」セクション参照。

--reform val
    このオプションでは、グレゴリオ暦への改暦の実施日を設定する。 改暦以前の日付には、ユリウス暦を使用し、改暦以後の日付には、グレゴリオ暦を使用するわけだ。 引き数の var には、以下のものが使える。

    •   1752 - 1752 年 9 月 3 日を改暦の日とする (デフォルト)。 これは大英帝国でグレゴリオ暦への改暦が実施された日である。

    •   gregorian - 一貫してグレゴリオ暦を表示する。gregorian というこの特別な値は、改暦日を cal が使用できる最小の年よりも前に置く。 その結果、カレンダーの出力のすべてでグレゴリオ暦が使われことになるわけだ。 これは遡及グレゴリオ暦 (the proleptic Gregorian calendar) と呼ばれる。暦法が作成されたときよりも前の日付でも、グレゴリオ暦で計算した値を使うからである。

    •   iso - gregorian の別名。「情報交換における日付と時刻の表記に関する ISO 8601 規格」では、遡及グレゴリオ暦を使用することになっている。

    •   julian - 一貫してユリウス暦を表示する。julian というこの特別な値は、改暦日を cal が使用できる最大の年よりも後に置く。 その結果、カレンダーの出力のすべてでユリウス暦が使われることになるわけだ。

    上記「説明」セクションを参照。

-y, --year
    その年の 1 年分のカレンダーを表示する。

-Y, --twelve
    指定月に続く 12 ヶ月のカレンダーを表示する。

-w, --week[=number]
    カレンダーに週番号を表示する (US 式と ISO-8601 式が選べる)。

    [訳注]
        ロングオプション --week を年の指定とともに使用した場合は、 等号 ("=") に続けて、週番号を引き数として指定することができる。 そうすると、その年のその週を含む月のカレンダーが表示される。 ただし、月を同時に指定すると、月のほうが優先されてしまう。US 式と ISO-8601 式の違いについては、「注記」セクションが参考になる。

--color[=when]
    出力をカラー表示にする。指定が任意の引き数 when は、auto, never, always のいずれかである。引き数 when が省略された場合は、デフォルトの auto になる。 カラー表示は無効化することもできる。 プログラムに埋め込まれた現在のデフォルトが有効か無効かを知りたければ、 --help の出力を見ればよい。「カラー表示」セクションも参照していただきたい。

-V, --version
    バージョン情報を表示して、終了する。

-h, --help
    ヘルプを表示して、終了する。

パラメータ

パラメータが 1 個で、数字のみからなる場合 (例 'cal 2020')
    表示すべき 年 を指定している。年を表す数字は全桁を指定する必要がある。cal 89 と指定しても 1989 のカレンダーは表示されない。

パラメータが 1 個で、文字列の場合 (例 'cal tomorrow' や 'cal August')
    タイムスタンプ、または現在のロケールによる月の名前 (短縮形も可) を指定している (訳注: タイムスタンプには、"2019-12-25" といった ISO 8061 形式の日付が使える)。

    タイムスタンプの解析では、タイムスタンプの代わり使える特定の単語も認識する。"now" は今現在を指すために使用できる。"today", "yesterday", "tomorrow" は、それぞれ、今日、昨日、明日を指す。

    相対的な日付指定も認識する。その場合、"+" を前に付けると、指定した期間を今現在に加えることになる。同様に、期間の前に "-" を付けると、今現在から指定した期間を引くことになる。たとえば、'+2days' のように指定するわけだ。期間の前に "+" や "-" を付ける代わりに、後ろに空白を置いて "left" や "ago" という単語を続けることもできる (たとえば、'1 week ago' のように)。

    [訳注]
        "ago" を使うときは、相対日付指定の全体を上の例のように引用符で囲む必要がある。 なお、訳者の手元の version 2.34 では "left" はエラーになる。"-" は、オプションと間違えられないように、 'cal -- -7week' などと '--' を前に付けてやる必要がある。

パラメータが 2 個の場合 (例 'cal 11 2020')
    月 (1 - 12) と 年 を表している。

パラメータが 3 個の場合 (例 'cal 25 11 2020')
    日 (1-31)、月、年 を表している。 端末上にカレンダーを表示するとき、指定した日が強調表示される。 パラメータを一つも指定しない場合は、今月のカレンダーが表示される。

注記
一年は、1 月 1 日に始まる。週の最初の日が何曜日かは、ロケールによって決まるが、 --sunday や --monday オプションを使って指定することもできる。

週番号は、週の最初の日を何曜日にするかで変わってくる。 それが日曜日ならば、北アメリカで一般的な週番号が使われる。その場合、1 月 1 日のあるのが、第 1 週である。週の最初の日が月曜日ならば、ISO 8601 規格の週番号が使われる。その場合は、最初の木曜日があるのが、第 1 週である。

カラー表示
暗黙のカラー表示は、以下のようにして無効化できる。
    touch /etc/terminal-colors.d/cal.disable
カラー表示の設定については、terminal-colors.d(5) にもっと詳しい説明がある。

バグ

cal のデフォルトの出力では、1752 年 9 月 3 日をグレゴリオ暦への改暦日としている。他のロケールでの歴史上の改暦日は、1582 年 10 月におけるその最初の導入も含めて、実装されていない。

ウンム・アルクラー暦、ヒジュラ太陽暦、ゲエズ暦、ヒンドゥー太陰太陽暦といった他の暦法には、対応していない。

履歴
cal コマンドは Version 6 AT&T UNIX で登場した。

入手方法
この cal コマンドは、util-linux パッケージの一部であり、 https://www.kernel.org/pub/linux/utils/util-linux/ から入手できる。