close
Перейти к содержанию

cal

Материал из Википедии — свободной энциклопедии

cal
Скриншот программы cal
Команда cal в сеансе zsh в Linux в Arch Linux
Тип Команда
Разработчик Charles Dye
Написана на Plan 9: C
FreeDOS: язык ассемблера
Операционные системы Unix, Unix-like, Plan 9, Inferno, MSX-DOS, FreeDOS
Дата выпуска 3 ноября 1971; 54 года назад (1971-11-03)
Аппаратная платформа Cross-platform
Лицензия util-linux: 4-пунктная лицензия BSD
FreeDOS: GNU GPL
Plan 9: Лицензия MIT

calкоманда облочки, которая выводит календарь в виде текста в кодировке ASCII на один или несколько месяцев. При использовании без параметров выводит календарь на текущий месяц.

Она описана в единой спецификации UNIX[1] и доступна на различных операционных системах, включая Unix, Plan 9, Inferno и Unix-подобные операционные системы вроде Linux. Была представлена в первой версии Unix. Команда cal также входит в состав Иструментов ASCII для MSX-DOS2 для MSX-DOS версии 2[2]. Доступна для FreeDOS (разработана Чарльзом Дайем), в которой поддерживает григорианский календарь (новый стиль) и может распространяться бесплатно, с исходным кодом или без него[3].

Вывод календаря на текущий месяц, которым в данном случае является февраль 2024 года.

$ cal
    February 2024                   
 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

Вывод календаря на предыдущий, текущий и следующий месяцы.

$ cal -3
     June 2022             July 2022            August 2022       
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                  1  2      1  2  3  4  5  6  
 5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13  
12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20  
19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27  
26 27 28 29 30        24 25 26 27 28 29 30  28 29 30 31

Вывод календаря на каждый месяц 2023 года.

$ cal 2023
                            2023
      January               February               March          
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  7            1  2  3  4            1  2  3  4  
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   5  6  7  8  9 10 11  
15 16 17 18 19 20 21  12 13 14 15 16 17 18  12 13 14 15 16 17 18  
22 23 24 25 26 27 28  19 20 21 22 23 24 25  19 20 21 22 23 24 25  
29 30 31              26 27 28              26 27 28 29 30 31     
                                                                  
       April                  May                   June          
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
                   1      1  2  3  4  5  6               1  2  3  
 2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10  
 9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17  
16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24  
23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30     
30                                                                
        July                 August              September        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
                   1         1  2  3  4  5                  1  2  
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   3  4  5  6  7  8  9  
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  10 11 12 13 14 15 16  
16 17 18 19 20 21 22  20 21 22 23 24 25 26  17 18 19 20 21 22 23  
23 24 25 26 27 28 29  27 28 29 30 31        24 25 26 27 28 29 30  
30 31                                                             
      October               November              December        
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  7            1  2  3  4                  1  2  
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9  
15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16  
22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23  
29 30 31              26 27 28 29 30        24 25 26 27 28 29 30  
                                            31

Вывод календаря на июнь 2023 года. Месяц выбирается по его номеру (1-12) в году.

$ cal 6 2023
      June 2023        
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

Странности (1752)

[править | править код]
$ cal 9 1752
  September 1752
 S  M Tu  W Th  F  S
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Королевство Великобритания вместе со своими владениями на Северной Америке (которые позже стали восточной частью США и Канадой) перешло на Григорианский календарь в сентябре 1752 года. По этой причине для сентября 1752 года команда cal не выводит пропущенные для корректировки дни. В этом месяце был официально (британцами) принят григорианский календарь вместо ранее использовавшегося юлианского. Это было задокументировано в справочных страницах Sun Solaris следующим образом: "An unusual calendar is printed for September 1752. That is the month when 11 days were skipped to make up for lack of leap year adjustments." («Необычный календарь на сентябрь 1752 года. В этом месяце было пропущено 11 дней, чтобы компенсировать отсутствие високосных лет»)[4]. В руководстве к Plan 9 говорится: "Попробуйте вызвать cal sep 1752". День принятия реформы в разных странах сильно различается, поэтому для некоторые пользователи могут воспринять это как ошибку. Известно, что особая обработка числа 1752 появилась еще в первом издании Unix Programmer's Manual (Руководства программиста Unix) в 1971 году[5].

Примечания

[править | править код]
  1. IEEE, The Open Group. Volume 3, Shell and Utilities // Information Technology — Portable Operating System Interface (POSIX®) Base Specifications, Issue 8 : [англ.]. — 2024. Архивная копия от 23 июля 2026 на Wayback Machine
  2. MSX-DOS2 Tools User's Manual - MSX-DOS2 TOOLS ユーザーズマニュアル (яп.) (1 апреля 1993).
  3. ibiblio.org FreeDOS Package -- cal (Unix-like) (англ.). www.ibiblio.org. Дата обращения: 27 января 2020. Архивировано 22 февраля 2020 года.
  4. Synopsis - man pages section 1: User Commands. docs.oracle.com. Дата обращения: 23 июня 2016. Архивировано 9 мая 2019 года.
  5. Thompson, K. Unix Programmer's Manual / K. Thompson, D. M. Ritchie. — First. — Bell Telephone Laboratories, 1971. — P. cal (VI). Архивная копия от 5 февраля 2023 на Wayback Machine

Литература

[править | править код]
  • Ray, Deborah S. Calendaring with cal // Unix and Linux: Visual QuickStart Guide / Deborah S. Ray, Eric J. Ray. — Book Publishers, 2010. — P. 276–278. ISBN 9780132104470.
  • cal(1)  страница справки man по пользовательским командам Plan 9  (англ.)
  • cal(1)  страница справки man по пользовательским командам GNU/Linux  (англ.)
  • cal(1)  страница справки man по пользовательским командам FreeBSD  (англ.)
  • cal(1)  страница справки man по пользовательским командам NetBSD  (англ.)
  • cal(1)  страница справки man по пользовательским командам OpenBSD  (англ.)
  • Source of explanation of cal 9 1752 phenomena (humor)