- Команда date в Linux
- Использование команды date в Linux
- Параметры форматирования даты
- Строка даты
- Отменить часовой пояс
- Конвертер эпохи
- Использование date с другими командами
- Отображение времени последнего изменения файла
- Установите системное время и дату
- Выводы
- Команда date в Linux
- Синтаксис
- Опции
- Параметры формата
- Использование команды date в Linux
- Текущее системное время и дата
- Заданное время и дата
- Установка или изменение даты
- Вывод прошлых дат
- Вывод будущих дат
- Переопределение часового пояса
- Использование date вместе с другими командами
- Выводы
Команда date в Linux
В этом руководстве мы рассмотрим основы команды date .
Команда date отображает или устанавливает системную дату. Чаще всего он используется для печати даты и времени в различных форматах и вычисления будущих и прошлых дат.
Использование команды date в Linux
Синтаксис команды date следующий:
Чтобы отобразить текущее системное время и дату с использованием форматирования по умолчанию, вызовите команду без каких-либо параметров и аргументов:
Вывод включает день недели, месяц, день месяца, время, часовой пояс и год:
Sat Jun 1 14:31:01 CEST 2019
Параметры форматирования даты
Выходные данные команды date могут быть отформатированы с помощью последовательности символов управления форматом, которым предшествует знак + . Элементы управления форматом начинаются с символа % и заменяются своими значениями.
date +"Year: %Y, Month: %m, Day: %d"
Символ %Y будет заменен годом, %m месяцем, а %d — днем месяца:
Year: 2019, Month: 06, Day: 02
Ниже приведен небольшой список некоторых наиболее распространенных символов форматирования:
- %a — сокращенное короткое название дня недели для локали (например, Mon)
- %A — сокращенное полное название дня недели (например, понедельник).
- %b — сокращенное краткое название месяца локали (например, январь)
- %B — сокращенное длинное название месяца локали (например, январь)
- %d — День месяца (например, 01)
- %H — час (00..23)
- %I — Час (01..12)
- %j — День года (001..366)
- %m — Месяц (01..12)
- %M — Минута (00..59)
- %S — Секунда (00..60)
- %u — День недели (1..7)
- %Y — полный год (например, 2019)
Чтобы получить полный список всех параметров форматирования, запустите в терминале date —help или man date .
Строка даты
Параметр -d позволяет вам работать с определенной датой. Вы можете указать дату в виде удобочитаемой строки даты, как показано ниже:
Sun Feb 7 12:10:53 CET 2010
Используя произвольное форматирование:
date -d '16 Dec 1974' +'%A, %d %B %Y'
Строка даты принимает такие значения, как «завтра», «пятница», «последняя пятница», «следующая пятница», «следующий месяц», «следующая неделя» и т. Д.
Sat May 25 14:31:42 CEST 2019
Вы также можете использовать опцию строки даты, чтобы показать местное время для разных часовых поясов. Например, чтобы показать местное время на 6:30 утра следующего понедельника на восточном побережье Австралии, введите:
date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Sun Jun 2 22:30:00 CEST 2019
Отменить часовой пояс
Команда date возвращает дату в часовом поясе системы по умолчанию. Чтобы использовать другой часовой пояс, установите переменную среды TZ на нужный часовой пояс.
Например, чтобы показать время Мельбурна, австралийское время, введите:
TZ='Australia/Melbourne' date
Sat Jun 1 22:35:10 AEST 2019
Чтобы /usr/share/zoneinfo список всех доступных часовых поясов , вы можете либо перечислить файлы в каталоге /usr/share/zoneinfo либо использовать команду timedatectl list-timezones .
Конвертер эпохи
Команду date можно использовать как конвертер эпохи. Эпоха или временные метки Unix — это количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC.
Чтобы напечатать количество секунд от эпохи до текущего дня, вызовите date с помощью элемента управления форматом %s :
Чтобы преобразовать секунды с начала эпохи до даты, установите секунды как строку даты с префиксом @ :
Sat Feb 14 00:31:30 CET 2009
Использование date с другими командами
Команда 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
Отображение времени последнего изменения файла
Команда date с параметром -r показывает время последней модификации файла. Например:
Tue Jul 24 11:11:48 CEST 2018
Если вы хотите изменить временную метку файла, используйте touch команду .
Установите системное время и дату
Установка системного времени и даты вручную с помощью команды date не рекомендуется, поскольку в большинстве дистрибутивов Linux системные часы синхронизируются с помощью служб ntp или systemd-timesyncd .
Однако, если вы хотите установить системные часы вручную, вы можете использовать параметр —set= . Например, если вы хотите установить дату и время на 17:30 1 июня 2019 г., введите:
Выводы
Команда Linux date отображает или устанавливает системные дату и время.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Команда date в Linux
В Linux команда date отображает и устанавливает системную дату и время, позволяет выводить время в различных форматах и вычислять будущие и прошлые даты.
Синтаксис
Опции
-d, —date=СТРОКА Показать не текущее время, а время, описанное заданной СТРОКОЙ —debug Описывать разбираемую дату и предупреждать о сомнительном использовании в stderr -f, —file=ФАЙЛ Как —date для каждой строки из ФАЙЛА -I[ФОРМ_ВРЕМЕНИ], —iso-8601[=ФОРМ_ВРЕМЕНИ] Вывод даты/времени в формате ISO 8601. Только дату, если ФОРМ_ВРЕМЕНИ=»date»» (по умолчанию), «hours», «minutes», «seconds» или «ns» для получения даты и времени с нужной точностью. Пример: 2006-08-14T02:34:56-06:00 —resolution Вывести доступное разрешение временных меток Пример: 0.000000001 -R, —rfc-email Выводить дату и время в соответствии с RFC-2822. Пример: Mon, 14 Aug 2006 02:34:56 -0600 —rfc-3339=СПЕЦ Вывести дату/время в формате RFC 3339 СПЕЦ=»date», «seconds» или «ns» для получения даты и времени с указанной точностью. Пример: 2006-08-14 02:34:56-06:00 -r, —reference=ФАЙЛ Показать время последнего изменения ФАЙЛА -s, —set=СТРОКА Установить время, описанное СТРОКОЙ -u, —utc, —universal Показать или установить универсальное координированное время (UTC)
Параметры формата
Воспринимаются следующие последовательности:
%% Знак % %a Сокращённое название дня недели (напр., вск) согласно локали %A Полное название дня недели (напр., понедельник) согласно локали %b Сокращённое название месяца (напр., янв) согласно локали %B Полное название месяца (напр., январь) согласно локали %c Время и дата (напр., Чтв 3 Мар 23:05:25 2005) согласно локали %C Век; как %Y, но не указываются две последние цифры (напр., 20) %d День месяца (напр., 01) %D Дата; аналогично %m/%d/%y %e День месяца, дополненный пробелами; аналогично %_d %F Полная дата; эквивалентно %+4Y-%m-%d %g Последние две цифры года для номера недели ISO (см. %G) %G Год для номера недели ISO (см. %V); обычно бывает полезно только с %V %h То же, что и %b %H Час (00..23) %I Час (01..12) %j Номер дня в году (001..366) %k Час, дополняется пробелом ( 0..23); то же, что и %_H %l Час, дополняется пробелом ( 1..12); то же, что и %_I %m Месяц (01..12) %M Минуты (00..59) %n Новая строка %N Наносекунды (000000000..999999999) %p Эквивалент AM или PM согласно локали; пусто, если неизвестно %P Как %p, но строчными буквами %q Квартал года (1..4) %r Время согласно локали, 12-часовой формат (напр., 11:11:04 PM) %R Часы и минуты согласно локали, 24-часовой формат; аналог %H:%M %s Число секунд с начала эпохи (1970-01-01 00:00:00 UTC) %S Секунда (00..60) %t Табуляция %T Время, аналог %H:%M:%S %u День недели (1..7); 1 обозначает понедельник %U Номер недели в году, если первый день недели — воскресенье (00..53) %V Номер недели по ISO, если первый день недели — понедельник (01..52) %w День недели (0..6), 0 означает воскресенье %W Номер недели в году, если первый день недели — понедельник (00..53) %x Представление даты (напр., дд/мм/гг) согласно локали %X Представление времени (напр., 23:13:48) согласно локали %y Последние две цифры года (00..99) %Y Год %z +ччмм часового пояса (напр., -0400) %:z +чч:мм часового пояса (напр., -04:00) %::z +чч:мм:сс часового пояса (напр., -04:00:00) %. z Часовой пояс с достаточным количеством двоеточий (напр., -04, +05:30) %Z Буквенная аббревиатура часового пояса (напр., EDT)
По умолчанию команда date дополняет числовые поля нулями. После % могут идти следующие необязательные флаги:
— (дефис) не дополнять это поле _ (подчёркивание) дополнять пробелами 0 (нуль) дополнять нулями + дополнять нулями и помещать «+» перед будущими годами >4 цифр ^ использовать верхний регистр, если возможно # использовать противоположный регистр, если возможно
После любого из флагов идет необязательная ширина поля в виде десятичного числа, затем необязательный модификатор, один из следующих:
E Если возможно, использовать альтернативное представление для текущей локали O Если возможно, использовать альтернативные числовые символы локали
Использование команды date в Linux
Текущее системное время и дата
Для того чтобы показать текущее системное время и дату, введите команду date без опций:
oleg@mobile:~:$ date Вс 06 ноя 2022 13:38:12 EET oleg@mobile:~:$
В выходных данных отображены день недели, день месяца, месяц, год, текущее время и часовой пояс. По умолчанию команда date настроена на часовой пояс операционной системы.
Заданное время и дата
В данном случае используется опция -d :
oleg@mobile:~:$ date -d "2001-12-31 23:59:59"09:10:15" Пн 31 дек 2001 23:59:59 EET oleg@mobile:~:$
Эта команда конечно же не влияет на фактические значения даты и времени в системе и выводит лишь запрошенную дату и время.
Установка или изменение даты
Вы можете изменить системные часы вручную. Например, чтобы установить дату и время на 07:30 11 мая 1999 г., введите:
oleg@mobile:~:$ date --set="19991011 07:30"
При выполнении этой команды будьте осторожны, так как на многих дистрибутивах Linux системные часы синхронизируются с помощью служб ntp или systemd-timesyncd.
Вывод прошлых дат
Для отображения прошлых дат в Linux используйте опцию —date со следующими значениями: «tomorrow», «Friday», «last Friday», «next Friday», «next week» и подобными.
oleg@mobile:~:$ date --date="2 weeks ago" Вс 23 окт 2022 15:20:05 EEST oleg@mobile:~:$
oleg@mobile:~:$ date --date="yesterday" Сб 05 ноя 2022 14:21:45 EET oleg@mobile:~:$
oleg@mobile:~:$ date --date="3 hours ago" Вс 06 ноя 2022 11:22:33 EET oleg@mobile:~:$
Вывод будущих дат
oleg@mobile:~:$ date --date="3 day" Ср 09 ноя 2022 14:27:08 EET oleg@mobile:~:$
oleg@mobile:~:$ date --date="tomorrow" Пн 07 ноя 2022 14:25:57 EET oleg@mobile:~:$
Переопределение часового пояса
По умолчанию команда date использует часовой пояс, определенный в /etc/localtime . Для использования другого часового пояса установите переменную TZ в желаемый часовой пояс.
Можно, например, установить в системе нью-йоркское время:
oleg@mobile:~:$ TZ='America/New_York' date
Увидеть все доступные часовые пояса позволит следующая команда:
oleg@mobile:~:$ timedatectl list-timezones list-timezones Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Africa/Asmera Africa/Bamako Africa/Bangui Africa/Banjul Africa/Bissau Africa/Blantyre Africa/Brazzaville Africa/Bujumbura Africa/Cairo Africa/Casablanca Africa/Ceuta Africa/Conakry Africa/Dakar Africa/Dar_es_Salaam Africa/Djibouti Africa/Douala Africa/El_Aaiun Africa/Freetown Africa/Gaborone Africa/Harare Africa/Johannesburg Africa/Juba Africa/Kampala Africa/Khartoum Africa/Kigali Africa/Kinshasa Africa/Lagos Africa/Libreville Africa/Lome Africa/Luanda Africa/Lubumbashi Africa/Lusaka Africa/Malabo lines 1-38
Использование date вместе с другими командами
Вы можете использовать команду date для создания имен файлов, содержащих текущее время и дату.
В Linux команда date с успехом используется в скриптах. Я, например, использую её для автоматического создания резервных копий баз данных.
Содержимое моего файла linuxcookbookru_dump.sh :
oleg@mobile:~/www/backuplinode:$ cat linuxcookbookru_dump.sh #!/bin/bash date=%% cd /home/mensh/www/backup && \ mysqldump --opt -umensh -pPASSWORD \ linuxcookbookru > linuxcookbookru_linode_`date '+%Y%m%d'`.sql && \ tar cjvf linuxcookbookru_linode_`date '+%Y%m%d'`.sql.bz2 linuxcookbookru_linode_`date '+%Y%m%d'`.sql && \ rm linuxcookbookru_linode_`date '+%Y%m%d'`.sql
Выводы
В этой статье я изложил основные приёмы использования в Linux команды date . Теперь вы наверняка понимаете насколько полезна эта команда.