Linux команда date примеры

Команда date в Linux

Главное свойство утилит GNU/Linux — делать что-то одно, но эффективно. Яркий пример — команда date Linux, работающая с датой и временем. С её помощью можно извлекать любую дату в разнообразном формате, в том числе и рассчитывать прошлое и будущее время. Привилегированные пользователи могут перезаписывать системное время, используя её.

Утилита предустановлена во всех дистрибутивах GNU/Linux. В этой статье будут рассмотрены возможности date и способы применения этой команды.

Синтаксис команды date

Программа может выполнятся от имени обычного пользователя. Стандартный синтаксис команды (квадратные скобки обозначают необязательное наличие):

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

Ниже представлена таблица с часто применяемыми опциями для date.

Опция Длинный вариант Значение
-d STRING —date=STRING Вывод даты по указанной строке (например ‘yesterday’, ‘tomorrow’, ‘last monday’).
-I —iso-8601[=FMT] Вывод даты в формате ISO 8601. FMT по умолчанию содержит ‘date’. Также может содержать ‘hourse’, ‘minutes’, ‘seconds’, ‘ns’ для отображения соответствующих значений и часовой пояс относительно UTC рядом с датой.
—rfc-3339=FMT Вывод даты в формате RFC 3339. FMT по умолчанию содержит ‘date’. Также может содержать ‘seconds’ и ‘ns’ для отображения секунд или наносекунд.
-r FILE —reference=FILE Вывод даты последней модификации указанного файла в формате по умолчанию.
-u —utc Вывод UTC-даты

Аргумент ФОРМАТ отвечает за форматирование вывода даты. Для его указания необходимо поставить знак «+» и написать нужную маску. Наиболее популярные форматы:

Формат Значение
%% Знак процента
%a День недели текущей локали в короткой форме («Чтв»)
%A День недели текущей локали в длинной форме («Четверг»)
%b Месяц года текущей локали в короткой форме в родительном падеже («янв»)
%B Месяц года текущей локали в длинной форме в родительном падеже («января»)
%c Дата и время текущей локали без указания часового пояса
Первые две цифры текущего года
%d Числовой день месяца с ведущим нулём
%D Дата в формате %m/%d/%y
%e День месяца; аналог %_d
%F Дата в формате %Y-%m-%d
%h Аналог %b
%H Часы (00..23)
%I Часы (01..12)
%j День года (001..366)
%m Месяц (01..12)
%M Минуты (00..59)
%n Новая строка
%q Квартал года
%S Секунды (00..59)
%t Знак табуляции
%T Время в формате %H:%M:%S
%u Числовой день недели; 1 — понедельник
%x Дата в локальном формате
%X Время в локальном формате
%Z Аббревиатура временной зоны
Читайте также:  Linux добавить доменное имя

Примеры использования date

Введем команду без параметров.

Будет отображена текущая дата и время в соответствии с настройками локали системы.

Команда date

Команда date без параметров по умолчанию применяет маску %a %b %d %X %Z. Поскольку все форматы должны быть переданы как один параметр (из-за принципа обработки данных командным интерпретатором Bash), пробелы между ними необходимо экранировать обратным слэшем (\) или взять в кавычки.

Особое внимание следует уделить параметру -d (—date). Его функциональность не слишком очевидна, но при этом наиболее обширна.

Пример 1. Вычисление даты по числу секунд, прошедших с 1 января 1970 года.

Вычисление даты по количеству секунд

Пример 2. Вычисление даты и времени следующего понедельника при указании часового пояса Нью-Йорка в 03:00.

date —date=’TZ=»America/New_York» 03:00 next mon’

Вычисление даты с указанием временной зоны

Обратите внимание: указывать название дня недели или месяца можно в любом регистре, в короткой или длинной форме. Параметры next и last обозначают следующий и прошедший, соответственно, ближайшие дни недели.

Пример 3. Если текущий день месяца — последний, сформировать отчет о занятости дискового пространства корневого и домашнего каталога в файл report.

#!/bin/bash
if [[ $(date —date=’next day’ +%d) = ’01’ ]]; then
df -h / /home > report

Такой скрипт можно использовать для автоматизации работы с помощью демона crontab или anacron.

Выводы

Команда date Linux является эффективным инструментом работы с датой и временем, с широкой возможностью их расчёта для прошедших или будущих показателей. Также она применяется в написании сценариев в командном интерпретаторе Bash.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Команда date в Linux

В Linux команда date отображает и устанавливает системную дату и время, позволяет выводить время в различных форматах и ​​вычислять будущие и прошлые даты.

Примеры использования команды date в Linux

Синтаксис

Опции

-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)

Читайте также:  Куда установить linux mint

По умолчанию команда 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 в желаемый часовой пояс.

Читайте также:  Scanning local network linux

Можно, например, установить в системе нью-йоркское время:

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 . Теперь вы наверняка понимаете насколько полезна эта команда.

Источник

Оцените статью
Adblock
detector