Обработка времени и даты на языке Shell
date – команда работы с датой и временем. Позволяет выводить текущую дату и время в различных форматах, а также устанавливает системное время.
Команда имеет следующий формат:
date [– опция ] [+ спецификаторы ]
Если команда выполняется без аргументов, на стандартный вывод выводится текущие дата и время.
$ date
Sun Dec 16 15:33:24 MSK 2009
Можно самостоятельно задать формат вывода даты и времени через спецификаторы. Перечень основных спецификаторов приведен в таблице 3.2.
Таблица 3.2
Спецификаторы команды date
Спецификатор | Описание | Пример |
%a | сокращенное наименование дня недели | Thu, Mon |
%A | полное наименование дня недели | Th |
%d | число месяца (01—31) | 02, 10, 31 |
%e | число месяца, дополненное пробелом ( 1—31) | 2, 9, 30 |
%j | день года (001—366) | 106, 299 |
%u | день недели (1—7) | 5 (=пятница) |
%U | номер недели (00—53, воскресенье — первый день недели) | 15, 44 |
%m | номер месяца (01—12) | 02 (=февраль) |
%h (%b) | сокращенное наименование месяца | Nov, Dec |
%B | полное наименование месяца | November, May |
%y | год без столетия (00—99) | 10 (1910 / 2010) |
%C | столетие (00—99) | 20 (для 20хх годов) |
%Y | год включая столетие | 1987, 2030 |
%D | формат представления даты в виде %m/%d/%y | 12/30/2015 |
%I | час в 12-часовой системе (01—12) | 03, 19 |
%k | час в 24-часовой системе, дополненный пробелом ( 0—23) | 6, 22 |
%H | час в 24-часовой системе (00—23) | 00, 21 |
%p, %P | время с указанием AM или PM («до полудня» или «после полудня»). | am, AM |
%M | минуты (00—59) | 05, 55 |
%s | число секунд, прошедших с 00:00:00 01/01/1970 | 1509660967 |
%S | секунды (00—60) | 56, 48 |
%N | наносекунды (000000000—999999999) | 596500424 |
%r | время в 12-тичасовом формате | 10:18:30 PM |
%R | время в формате %H:%M | 22:19 |
%T | время в формате %H:%M:%S | 14:33:56 |
%z | часовой пояс в формате RFC-2822 (±zzzz) | +0000, -0400 |
%% | выводит знак % | 10:18:30 PM |
%n, %t | знак перевода строки и табуляции | 22:19 |
Для управления форматом вывода в качестве первого символа должен быть указан +. В строке могут содержаться произвольные слова, цифры и пр. Например, в приведенной ниже команде DATE: и TIME: будут интерпретированы как слова, в вместо спецификаторов будут выведены соответствующие им значения даты и времени:
|
|
$ date ” +DATE: %m/%d/%Y%nTIME: %H:%M:%S ”
DATE: 08/23/1998
TIME: 14:45:05
Если в строке параметров команды есть пробелы, то строка вывода должна быть указана в кавычках.
В таблице 3.3 приведены некоторые опции команды date.
Таблица 3.3
Опции команды date
Опции | Описание | Пример |
$ date -d “ ММ/ DD/YYYY HH:MM:SS zzzz” | Позволяет работать не с текущим временем, а указанном виде строки формата “MM/DD/YYYY [HH:MM:SS [zzzz]]”. Также команда воспринимает в качестве параметра слова и словосочетания “YESTERDAY”, “$x days ago”, “+2 minutes” | $ date -d "03/14/1999" Sun Mar 14 00:00:00 UTC 1999 $ date -d "03/14/1999" +%A Sunday $ date -d "03/14/1999 00:34:56" +%T 00:34:56 $ date Sat Mar 13 21:37:56 UTC 1999 $ date -d "+2hours -3minutes " Sat Mar 13 23:34:56 UTC 1999 |
$ date -d@хххххххххх | Число, стоящее после @ интерпретируется как число секунд с 01/01/1970. Команда выводит дату и время, соответствующую введенным секундам в стандартном формате | date -d@838213188 Wed Jul 24 12:59:48 UTC 1996 |
$ date - s “ ММ/ DD/YYYY HH:MM:SS +/-xxxx” | Устанавливает системное время в указанное в качестве параметра значение. Для выполнения необходимо работать как суперпользователь root | date -s "01/01/2016" |
$ date - r filename | Показывает время последнего изменения файла filename | $ date - r file.txt Fri Nov 3 07:15:54 UTC 2017 |
$ date -u | Работает с универсальным кодированным временем UTC = 0000* - то есть время по Гринвичу. Для Москвы UTC+3 | $ date -u +%z +0000 |
* Среднее время по Гринвичу (GMT) находится в одном часовом поясе с всемирным координированным временем (UTC).
|
|
Спецификатор %s позволяет узнать число секунд, прошедших с 01/01/1970 до текущей или заданной даты. Дата 01/01/1970 считается датой создания UNIX-систем.
$ date -d "01/01/1970 00:01:00 +0000" +%s
300
Если необходимо производить отсчет даты от заданного значения, возможны следующие комбинации:
|
|
Команда | Строка, содержащая сведения о дате | Смещение вперед | Смещение назад |
date -d | "10/15/2000 | x day[s] ["] x week[s] ["] x month[s] ["] x year[s] ["] x hour[s] ["] x minute[s] ["] x second[s] ["] | ago" |
---------------------yesterday " tomorrow” next may/Monday/… last Sunday/hour/… |
Здесь х – произвольное число, слова “next” или “last”.
Некоторые примеры выполнения команды date приведены ниже.
$ date -d "next sunday" | Выводит дату следующей пятницы |
$ date -d " last monday" | Выводит дату предыдущего понедельника |
x=5 date -d "$x days ago" | Выводит дату х дней назад от текущего значения |
date -d "10/10/2000 3 days ago " | Выводит дату на 3 дня раньше, чем указана в аргументе |
date -d "00:00:25 13 seconds" | Выводит время на 13 секунд больше указанного (например, Fri Nov 3 00:00:38 UTC 2017) |
date –d yesterday | Выводит вчерашнюю дату |
Дата добавления: 2020-01-07; просмотров: 486; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!