Команда cal в Linux: как выводить календарь в терминале

Использование терминала Linux может быть таким увлекательным, что вы теряете счёт дням. К счастью, в Linux есть команда, которая выводит календарь прямо в терминал. Cal — стандартная утилита, печатающая ASCII‑календарь для заданного месяца и года.
В этой статье коротко разберём cal, его ключевые опции и способы применения на вашей системе Linux.
Основы: как быстро получить календарь
Чтобы увидеть календарь текущего месяца, введите в терминале:
calВ этой реализации текущая дата подсвечивается. На скриншоте это было 16 марта 2021 года.
Частые опции и примеры
Cal поддерживает несколько полезных флагов. Примеры ниже работают в большинстве реализаций, но поведение может немного отличаться в зависимости от сборки на вашей системе.
- Показать последние три месяца:
cal -3- Показать весь год:
cal -y- Показать конкретный год:
cal -y 2020- Показать конкретный месяц и год (замените month и year на числа):
cal 3 1973Пример выше выведет календарь за март 1973 года. В этот день, 1 марта 1973 года, вышел альбом Pink Floyd «The Dark Side of the Moon», что для многих является запоминаемой датой.
ncal и начало недели
В Ubuntu и некоторых других дистрибутивах вы можете вызывать ncal. Утилита ncal предлагает дополнительные представления и флаги, например -S и -M для установки первого дня недели воскресенья или понедельника.
ncal -M # неделя начинается с понедельника
ncal -S # неделя начинается с воскресеньяПримечание: отображение начала недели и формат дат может зависеть от локали системы (переменные окружения LANG/LC_TIME).
Почему в сентябре 1752 пропали дни
Если вы выполните команду:
cal 9 1752то увидите странный календарь, где дни переходят с 2 на 14. Это не баг. В сентябре 1752 года Великобритания и её колонии (включая территории, которые позже стали Канадой и США) перешли с юлианского календаря на григорианский. В результате 11 дней были исключены, чтобы синхронизировать календарь с астрономическим годом.
Важно: другие страны меняли календари в разные годы, поэтому странные пропуски дат могут появляться и в других исторических календарях.
Быстрая шпаргалка: полезные команды
cal # календарь текущего месяца
cal -3 # предыдущий, текущий и следующий месяцы
cal -y # весь текущий год
cal -y 1999 # весь год 1999
cal 12 2025 # декабрь 2025
ncal -M # ncal, неделя с понедельника
man cal # страница руководстваКопируйте эти команды в терминал и подставляйте нужные числа.
Чеклист для ролей
Для системного администратора:
- Убедитесь, что локаль сервера установлена правильно (проверьте LANG/LC_TIME).
- Используйте man cal для проверки доступных флагов на конкретном хосте.
Для разработчика или скрипт‑автора:
- Пропишите в скриптах явные форматы даты (ISO 8601) вместо чтения ASCII‑календаря.
- Для обработки дат используйте утилиты date или библиотеки языка программирования.
Для обычного пользователя:
- Используйте cal для быстрого просмотра дат и планирования.
- Попробуйте ncal для альтернативного отображения недель и вертикального формата.
Советы по чтению man и мини‑методология изучения команды
- Откройте man‑страницу:
man cal. - Просмотрите SYNOPSIS и OPTIONS — они кратко описывают флаги.
- Исключите лишние флаги и протестируйте пару команд в терминале.
- Если man кажется длинным, используйте
man cal | col -b | sed -n '1,120p'для просмотра первых строк, либо ищите краткие примеры в интернете.
Отличия версий и совместимость
Существуют разные реализации календарных утилит. Поведение может отличаться в следующих аспектах:
- Отображение текущего дня (подсветка) и формат вывода.
- Набор поддерживаемых флагов (например, некоторые сборки предлагают дополнительные параметры).
- Начало недели по умолчанию — зависит от локали или сборки (BSD vs GNU/другое).
Если команда на вашем хосте отличается от примеров, посмотрите man cal и cal --help.
Краткий справочник по принятым решениям (Decision flow)
flowchart TD
A[Нужно быстро посмотреть дату?] -->|Да| B[cal]
A -->|Хочу несколько месяцев| C[cal -3]
A -->|Хочу весь год| D[cal -y]
C --> E{Нужен формат недели}
E -->|Пн| F[ncal -M]
E -->|Вс| G[ncal -S]Глоссарий (одна строка каждое определение)
- cal — утилита для вывода ASCII‑календаря в терминале.
- ncal — альтернативная реализация с другими представлениями и флагами.
- Локаль (LANG/LC_TIME) — настройки системы, определяющие формат даты и начало недели.
- Юлианский/Григорианский календарь — исторические системы счёта дней, смена которых изменяла даты.
Когда cal не подходит и альтернативы
- Для машинной обработки дат используйте date, GNU date или библиотеки языка программирования (Python datetime, JavaScript Date). Cal предназначен для визуального просмотра человеком.
- Для графических календарей используйте GUI‑приложения (GNOME Calendar, Thunderbird/Lightning и пр.).
Короткое резюме
- cal — удобный инструмент для быстрого просмотра календаря в терминале.
- Основные флаги: -3 для трёх месяцев, -y для года, использование ncal меняет отображение и позволяет задать первый день недели.
- Исторические аномалии, вроде сентября 1752 года, объясняются переходом с юлианского на григорианский календарь.
Важно: перед использованием в скриптах проверяйте поведение cal на вашей системе через man или –help.
Краткие выводы ниже.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента