Командная строка - маленькие хитрости от Linux Commando. Фокусы с датами
|
|
Все знают команду date, которая сообщает нам текущее время и дату. Изредка ею пользуются, чтобы скорректировать системное время. Это бывает все реже, так как появился сервис ntp, автоматически синхронизирующий системное время с сервером точного времени по вашему выбору. Сегодня в ходу многочисленные реализации команды date. В этой статье говорится только о команде date из пакета GNU coreutils.
По умолчанию команда сообщает текущую дату и время. $ date Sat Nov 14 17:54:51 PST 2009
Команда позволяет вам также производить основные вычисления будущих или прошедших дат. Для этого нужно применить опцию -d, а в качестве параметра указать желаемый отрезок времени вперед или назад: $ date -d -30days Thu Oct 15 18:54:56 PDT 2009
Сколько раз вы вычисляли, какой был день недели и число N дней назад? Только вчера мне необходимо было вспомнить дату 30 дневной давности, чтобы найти нужный лог. Для вычисления будущей даты вместо минуса ставим плюс: $ date -d +30days Thu Oct 15 18:54:56 PDT 2009
Кроме дней (days) единицами могут служить годы (years), месяцы (months), минуты (minutes) и секунды (seconds). $ date -d +2months Thu Jan 14 18:48:43 PST 2010
Их можно также комбинировать: $ date -d +2months17days Sun Jan 31 18:49:45 PST 2010
Все вычисления мы производили относительно настоящего момента. А как насчет отсчета десяти дней от завтрашнего дня? Легко: $ date -d tomorrow+10days Wed Nov 25 18:52:03 PST 2009
Или назад от вчерашнего: $ date -d yesterday-10days Tue Nov 3 18:53:07 PST 2009
В качестве точки отсчета можно указать любой день, например, 21 января 2010: $ date -d '2010-01-21 + 2 weeks 3 days' Sun Feb 7 00:00:00 PST 2010
И, наконец, команда распознает дни недели (Понедельник, Вторник и так далее) и два ключевых слова: "last" (прошлый) и "next" (следующий). Вот пример: $ date -d 'next tuesday + 1 day' Wed Nov 18 00:00:00 PST 2009
|