date
Показать или установить системную дату и время
← Урок 02: Первые команды — урок где команда введена
Описание
date — утилита GNU coreutils для отображения и установки системной даты и времени.
Без аргументов выводит текущие дату и время в стандартном формате. С форматной строкой
(+ФОРМАТ) — выводит дату в произвольном формате.
date широко используется в скриптах: для создания временных меток в именах файлов,
логировании, дозаписи даты в файлы. В уроках 04 и 06 используется паттерн
date >> file.txt — дозапись текущей даты в файл.
Для установки системной даты требуются права суперпользователя. В большинстве современных систем дата синхронизируется автоматически через NTP — ручная установка используется редко.
Синтаксис
Компоненты команды:
- date — вывести текущую дату и время.
- +ФОРМАТ — строка формата, начинающаяся с
+. Спецификаторы заменяются соответствующими значениями:%Y— год,%m— месяц,%d— день. - [ОПЦИИ] — флаги для изменения поведения.
Флаги и опции
| Флаг | Описание |
|---|---|
+ФОРМАТ |
Форматирование вывода. Строка начинается с +, спецификаторы: %Y (год 4 цифры), %m (месяц), %d (день), %H (часы), %M (минуты), %S (секунды), %s (Unix timestamp) |
-u |
Вывести время в UTC (Coordinated Universal Time) вместо локального времени |
-d STRING |
Отобразить дату из строки STRING вместо текущей. Понимает относительные выражения: -d "yesterday", -d "2 days ago", -d "next monday", -d "2026-01-15" |
-s STRING |
Установить системную дату из строки STRING. Требует прав root (sudo) |
-R |
Вывести дату в формате RFC 2822 (пригоден для заголовков email): Wed, 11 Jun 2026 17:30:20 +0000 |
-I[FMT] |
Вывести дату в формате ISO 8601. Значения FMT: date (по умолчанию), hours, minutes, seconds |
Паттерны использования
Текущая дата и время
Базовый вызов для проверки системного времени.
date # Wed Jun 11 17:30:20 UTC 2026 # UTC время date -u # Wed Jun 11 17:30:20 UTC 2026
Дата в нужном формате
Форматирование — самый частый сценарий: имена файлов, логи, метки времени.
# Только дата: YYYY-MM-DD date +%Y-%m-%d # 2026-06-11 # Дата и время date +"%Y-%m-%d %H:%M:%S" # 2026-06-11 17:30:20 # Имя файла с датой LOGFILE="backup-$(date +%Y%m%d).tar.gz" echo $LOGFILE # backup-20260611.tar.gz
Дозапись даты в файл (ДЗ уроков 04 и 06)
Паттерн из домашних заданий: записать текущую дату в файл дозаписью.
# ДЗ урока 04: дозапись даты в файл date >> /home/user/start/1.txt # ДЗ урока 06: записать дату в новый файл date > /home/user/myfile.txt # Дозапись с форматом date +"%Y-%m-%d %H:%M:%S" >> /tmp/log.txt
Unix timestamp и относительные даты
Работа с временными метками и вычисление дат.
# Unix timestamp (секунды с 1970-01-01) date +%s # 1749663020 # Дата вчера date -d "yesterday" +%Y-%m-%d # 2026-06-10 # Дата через 7 дней date -d "+7 days" +%Y-%m-%d # 2026-06-18 # Формат конкретной даты date -d "2026-01-01" +"%A" # Thursday
Советы и предупреждения
Наиболее используемые спецификаторы для форматной строки:
%Y | Год 4 цифры (2026) |
%m | Месяц 01–12 |
%d | День 01–31 |
%H | Часы 00–23 |
%M | Минуты 00–59 |
%S | Секунды 00–59 |
%s | Unix timestamp (секунды с эпохи) |
%A | Полное название дня недели (Monday...) |
%B | Полное название месяца (January...) |
%j | День года 001–366 |
man date → раздел FORMAT.
Флаг
-s для установки системной даты требует прав суперпользователя:
sudo date -s "2026-06-11 12:00:00". Без sudo получите ошибку
"date: cannot set date: Operation not permitted". В большинстве современных
серверов и десктопов дата синхронизируется через NTP автоматически — ручная установка нужна
редко (только в изолированных средах без интернета).