Команда date отображает или устанавливает системную дату. Чаще всего она используется для печати даты и времени в разных форматах и для расчета будущих и прошлых дат.
В этой статье мы рассмотрим основы команды date в Linux.
Использование команды date в Linux
Синтаксис команды date следующий:
date [OPTION]... [+FORMAT]
Чтобы отобразить текущее системное время и дату, используя форматирование по умолчанию, вызовите команду без каких-либо параметров:
date
Вывод будет включать день недели, месяц, день месяца, время, часовой пояс и год:
Sat Jun 1 14:31:01 MSK 2019
Параметры форматирования даты
Вывод date может быть отформатирован с помощью последовательности символов управления форматом, перед которой стоит знак +. Элементы управления форматом начинаются с символа % и заменяются их значениями.
date +"Год: %Y, Месяц: %m, День: %d"
Символ %Y будет заменен на год, %m на месяц и %d на день месяца:
Год: 2019, Месяц: 06, День: 02
Вот еще один пример:
date "+ДАТА: %D%nВРЕМЯ: %T"
ДАТА: 06/02/19 ВРЕМЯ: 01:47:04
Ниже приведен небольшой список некоторых наиболее распространенных символов форматирования:
- %a – Сокращенное название дня недели (например, понедельник)
- %A – Сокращенное полное название дня недели (например, понедельник)
- %b – Сокращенное краткое название месяца (например, январь)
- %B – Сокращенное длинное название месяца (например, январь)
- %d – День месяца (например, 01)
- %H – Час (00..23)
- %I – Час (01.12.12)
- %j – День года (001..366)
- %m – Месяц (01.12.12)
- %M – Минута (00..59)
- %S – Секунда (00 .. 60)
- %u – День недели (1..7)
- %Y – Полный год (например, 2019)
Чтобы получить полный список всех параметров форматирования, запустите date –help или man date в своем терминале.
Дата строкой
Опция -d позволяет работать на конкретную дату. Вы можете указать дату в виде удобочитаемой строки даты, как показано ниже:
date -d "2010-02-07 12:54:21"
Sun Feb 7 12:54:21 MSK 2010
Использование пользовательского форматирования:
date -d '16 Dec 1974' +'%A, %d %B %Y'
Monday, 16 December 1974
Строка даты также может принимать значения, такие как “tomorrow”, “friday”, “last friday” “next friday”, “next month”, “next week”… и т. д.
date -d "last week"
Sat May 25 14:31:42 MSK 2019
Вы также можете использовать параметр строки даты, чтобы показать местное время для разных часовых поясов. Например, чтобы показать местное время для 6:30 утра следующего понедельника по Московскому времени, введите:
date -d 'TZ="Europe/Moscow" 06:30 next Monday'
Mon Jun 10 06:30:00 MSK 2019
Переопределить часовой пояс
Команда date использует системный часовой пояс по умолчанию . Чтобы использовать другой часовой пояс, установите переменную среды TZ в желаемый часовой пояс.
Например, чтобы показать время по Москве, введите:
TZ='Europe/Moscow' date
Sat Jun 1 22:35:10 MSK 2019
Чтобы получить список всех доступных часовых поясов, вы можете либо перечислить файлы в каталоге /usr/share/zoneinfo, либо использовать команду timedatectl list-timezones.
Конвертер эпох
Команда date может быть использована в качестве преобразователя эпох. Время, или метки времени Unix, – это количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC.
Чтобы напечатать количество секунд от эпохи до текущего дня, используйте управление форматом %s:
date +%s
1559393792
Чтобы преобразовать секунды с начала эпохи в дату, установите секунды в виде строки даты с префиксом @:
date -d @1234567890
Sat Feb 14 00:31:30 MSK 2009
Использование даты с другими командами
Команда date чаще всего используется для создания имен файлов, которые содержат текущее время и дату.
Команда ниже создаст файл резервной копии Mysql в следующем форматеdatabase_name-20190601.sql
mysqldump database_name > database_name-$(date +%Y%m%d).sql
Вы также можете использовать команду date в своих сценариях оболочки. В приведенном ниже примере мы присваиваем выход date к переменной date_now:
date_now=$(date "+%F-%H-%M-%S") echo $date_now
2019-06-02-12-54-31
Показать время последнего изменения файла
Команда dateс c параметром -r показывает время последнего изменения файла. Например:
date -r /etc/hosts
Tue Jul 24 12:54:31 MSK 2019
Если вы хотите изменить временную метку файла, используйте команду touch.
Установите системное время и дату
Установка системного времени и даты вручную с помощью dateкоманды обычно не рекомендуется, поскольку в большинстве дистрибутивов Linux системные часы синхронизируются с ntp помощью служб systemd-timesyncd.
Однако, если вы хотите установить системные часы вручную, вы можете использовать опцию –set=. Например, если вы хотите установить дату и время 12:54, 02 июня 2019 г., введите:
date --set="20190602 12:54"
Заключение
К настоящему времени вы должны хорошо понимать, как использовать команду date в Linux.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.