Во время работы в командной строке Linux, вы могли бы войти в ситуацию, когда вам нужно отобразить (или даже изменить) текущее системное время. Мало того, что, если вы работаете с членами в команде, которые находятся в разных часовых поясах, возможно, вы захотите, обновлять с течением времени информацию, касающейся зоны, в которых сидят другие члены.
Если вы ищете инструмент, который позволяет делать все это (и многое другое), вы будете рады узнать, что существует команда date. В этой статье мы обсудим основные команды «date», а также, как вы можете использовать ее. Но прежде чем мы это сделаем, стоит отметить, что все команды и инструкции, упомянутые здесь, были протестированы на Ubuntu 16,04 LTS.
Вот общий синтаксис команды date:
date [OPTION]... [+FORMAT]
А вот что говорит страница man об этом:
date - вывод или установка даты и время системы Отображение текущего времени в данном формате, или установка системной даты.
Следующие примеры должны дать вам хорошее представление о том, как эта команда работает.
Это поведение по умолчанию. Чтобы узнать дату и время вашей системы, все, что вам нужно сделать, это запустить программу следующим образом (да, любой вариант без):
date
Вот команда в действии:
date Sun Jul 9 19:41:10 MSK 2017
Таким образом, вы можете видеть, что информация, как день, дата, время, часовой пояс, а также год был показан на выводе.
Чаще всего, мы смотрим на календари, чтобы знать дату в определенный день недели. Например, требование может быть такое, узнать дату «когда следующий вторник». Вы будете рады узнать, что это возможно с помощью команды «date».
-d или —date параметр командной строки будет помощью в этом случае:
date -d "next Tuesday"
Вот вышеприведенная команда в действии:
date -d "next Tuesday" Tue Jul 11 00:00:00 MSK 2017
Итак, как вы можете видеть, команда показала, что следующий вторник 4 июля.
Входной параметр -d/—date может быть разных типов. Вот как man описывает эту команду:
--date = строка в основном свободный формат удобочитаемой строки даты, такие как «Sun, 09 Feb 2017 19:21:20 -1905» или «2017-02-09 19:21:20» или даже «в следующий четверг», Строка даты может содержать элементы, указывающие на календарную дату, время суток, часовой пояс, день недели, относительное время, относительную дату и номер. Пустая строка указывает на начало дня. Формат строки даты является более сложным, чем описываемая здесь, но полностью описаны в информационной документации.
Чтобы получить доступ к информации в документации на дату, используйте следующую команду:
info date
В случае, если вы хотите, инструмент для отображения информации о дате/времени в формате ISO 8601, вы можете использовать параметр —iso-8601 командной строки. Эта опция требует, указать формат.
--iso-8601[=FMT]
Вот как страница man объясняет «format»:
FMT='date' только для даты (по умолчанию), 'hours', 'minutes', 'seconds', или 'ns' для даты и времени с указанной точностью. Пример: 2017-07-09T19:20:30-0600
Например, мы тестировали следующую команду:
date --iso-8601=seconds
На выходе было произведено:
2017-07-09T19:48:20+03:00
Как вы уже догадались, есть специальный параметр командной строки для этого: —rfc-3339. Как вариант, рассмотренный в предыдущем разделе, один также требует ввести формат.
Следующий пример показывает эту опцию в действии:
date --rfc-3339=seconds 2017-07-09 19:49:58+03:00
Кроме того, вы можете использовать —rfc-2822 для возможности выводить данные в этом формате.
Вы можете также использовать команду date, чтобы отобразить время последнего изменения файла. Опция -r позволяет сделать это. Вот пример:
date -r file1
Вывод:
date -r file1 Tue Jul 09 19:53:10 MSK 2017
Для установки системной даты/времени на другое значение, используйте параметр -s командной строки. Эта опция требует строку, которая будет использоваться в качестве входных данных для установки системной времени/даты.
date -s STRING
Вот пример того, как мы использовали параметр -s, чтобы установить дату и время в нашей системы:
date -s "2017-06-27 14:53:00"
Пожалуйста, обратите внимание, что вам, возможно, придется использовать «sudo» для опции -s.
Для того, чтобы команда date отображала текущее время в другом месте — скажем, Мельбурн в Австралии — использовать ее надо следующим образом:
TZ="Australia/Melbourne" date
Вот вышеприведенная команда в действии:
TZ="Australia/Melbourne" date Mon Jul 10 02:59:50 AEST 2017
Для этого используйте параметр -u командной строки. Например, следующая команда будет отображать информацию в формате UTC:
date -u
# date -u Sun Jul 9 16:32:28 UTC 2017
Как большинство из вас, согласитесь, команда date не трудно понять и использовать. Кроме того, тот факт, что она также может быть использована при работе с несколькими географическими местами делает ее важным инструментом командной строки. Мы обсудили большинство параметров командной строки здесь, так что просто попробуйте их на вашей системе.