Тайм-менеджмент в терминале: Как команда date в Linux делает больше, чем вы думаете

Тайм-менеджмент в терминале: Как команда date в Linux делает больше, чем вы думаете

Вы когда-нибудь задумывались, насколько мощным может быть простой вывод даты и времени? Команда `date` в Linux — это не просто цифры на экране. Это ваш швейцарский нож для работы со временем прямо из терминала.

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

Эта утилита предустановлена в любом дистрибутиве и готова к работе. Мы покажем вам, как с помощью параметра `-d` вычислять даты по описательным строкам вроде 'yesterday' или 'next month'. Вы научитесь выводить время в форматах ISO 8601 или RFC 3339 для строгой отчетности.

Узнаете, как использовать форматирование с символами `%Y`, `%m`, `%d` для создания собственных шаблонов даты. Мы разберем, как проверять время последнего изменения файлов и даже как устанавливать системное время, если у вас есть права суперпользователя.

Готовы превратить терминал в вашу личную машину времени и автоматизировать скучные задачи? Всё, что нужно для этого знать, — в полной версии статьи.


Главное свойство утилит 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 Аббревиатура временной зоны

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

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

date

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

Тайм-менеджмент в терминале: Как команда date в Linux делает больше, чем вы думаете

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

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

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

date --date='@1234567890'

Тайм-менеджмент в терминале: Как команда date в Linux делает больше, чем вы думаете

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

date --date='TZ="America/New_York" 03:00 next mon'

Тайм-менеджмент в терминале: Как команда date в Linux делает больше, чем вы думаете

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

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

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

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

Выводы

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

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив