linux система

date

Показать или установить системную дату и время

← Урок 02: Первые команды — урок где команда введена

Описание

date — утилита GNU coreutils для отображения и установки системной даты и времени. Без аргументов выводит текущие дату и время в стандартном формате. С форматной строкой (+ФОРМАТ) — выводит дату в произвольном формате.

date широко используется в скриптах: для создания временных меток в именах файлов, логировании, дозаписи даты в файлы. В уроках 04 и 06 используется паттерн date >> file.txt — дозапись текущей даты в файл.

Для установки системной даты требуются права суперпользователя. В большинстве современных систем дата синхронизируется автоматически через NTP — ручная установка используется редко.

Синтаксис

date [ОПЦИИ] [+ФОРМАТ]

Компоненты команды:

# Текущая дата и время (стандартный формат) date # 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 # Дозапись даты в файл (ДЗ урока 04) date >> /home/user/start/1.txt

Флаги и опции

Флаг Описание
+ФОРМАТ Форматирование вывода. Строка начинается с +, спецификаторы: %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
%sUnix timestamp (секунды с эпохи)
%AПолное название дня недели (Monday...)
%BПолное название месяца (January...)
%jДень года 001–366
Полный список: man date → раздел FORMAT.
Установка даты требует прав root
Флаг -s для установки системной даты требует прав суперпользователя: sudo date -s "2026-06-11 12:00:00". Без sudo получите ошибку "date: cannot set date: Operation not permitted". В большинстве современных серверов и десктопов дата синхронизируется через NTP автоматически — ручная установка нужна редко (только в изолированных средах без интернета).