Команда date linux примеры
Команда date позволяет задействовать одноименную утилиту, которая используется для двух целей. Обычно она используется для получения текущих даты и времени при необходимости в заданном формате, но при этом она также позволяет устанавливать их.
Стандартный синтаксис команды выглядит следующим образом:
$ date [описание времени или формата вывода]
Формат ввода даты и времени
Для начала рассмотрим вопрос установки текущих даты и времени, так как данное действие выполняется достаточно просто (единственная сложность связана с запоминанием формата даты и времени). Вы можете самостоятельно выполнить команду man date для того, чтобы уточнить формат даты и времени, используемый в вашей системе. В большинстве случаев он является следующим:
Но все не так сложно, как кажется на первый взгляд. Параметры в квадратных скобках являются необязательными — вы можете как использовать их, так и отказаться от их использования. Каждая пара букв соответствует элементу записи даты или времени:
| Элемент записи | Назначение |
| MM | Месяц (от 01 до 12) |
| DD | День (от 01 до 28, 29, 30 или 31 в зависимости от месяца) |
| hh | Часы (от 00 до 24) |
| mm | Минуты (от 00 до 59) |
| YY | Две последние цифры года (от 00 до 99, не обязательно) |
| CC | Век (от 00 до 99, используется вместе с предыдущим элементом, не обязательно) |
| .ss | Секунды (от 00 до 59 с символом точки, не обязательно) |
Как утилита вычисляет век? В UNIX-подобных операционных системах время хранится в формате числа секунд, прошедших с 1 января 1970 года в часовом поясе GMT (также известном, как UTC). Из-за того, что с этой даты прошло достаточно много времени, а для хранения количества секунд в 32-битных системах используется 4-байтовое целочисленное значение, в 2038 году на этих системах должен произойти переход счетчика секунд через нулевое значение. Ввиду того, что подсчитывается лишь количество секунд, век попросту не принимается во внимание. Таким образом, на 32-битных системах значения года от 00 до 38 соответствуют 2000-м годам, а значения года от 70 до 99 — 1900 годам. Фактически, на 32-битных системах команда date не позволяет установить год, не входящий в приведенные выше диапазоны. В 64-битных системах все проще: для подсчета времени используется 8-байтовое целочисленное значение, поэтому имеется огромный запас по времени (292 миллиарда лет), доступен полный диапазон годов от 00 до 99, а век вычисляется обычным образом по количеству прошедших секунд.
Для установки текущих даты и времени необходимы права пользователя root, иначе вы получите аналогичное сообщение об ошибке:
date: невозможно установить дату: Операция не позволена
Формат вывода даты и времени
Команда date без параметров хороша в том случае, если вам нужно узнать текущие дату в время. Но функция вывода даты и времени в произвольном формате полезна при разработке сценариев командной оболочки. Иногда нужно использовать максимально краткую запись даты; иногда в сценарии нужно обрабатывать лишь время без даты; иногда дату и время приходится сравнивать с датой и временем из внешнего источника и это сравнение будет гораздо более простым в случае получения текущих даты и времени в том же формате, в котором передаются данные из внешнего источника.
Для форматирования текущих даты и времени в соответствии со своими предпочтениями пользователь должен передать утилите строку форматирования после символа +:
Строка форматирования состоит из параметров форматирования, приведенных в таблице ниже.
| Параметр форматирования | Назначение | Пример вывода |
| %a | Сокращенное название дня недели | Чт |
| %A | Полное название дня недели | Четверг |
| %b | Сокращенное название месяца | июн |
| %B | Полное название месяца | Июнь |
| %d | Номер дня недели | 08 |
| %D | Текущая дата в формате ММ/ДД/ГГ | 06/08/17 |
| %F | Текущая дата в формате ГГГГ/ММ/ДД | 2017-06-08 |
| %H | Часы в 24-часовом формате в диапазоне от 00 до 23 | 18 |
| %l | Часы в 12-часовом формате в диапазоне от 01 до 12 | 6 |
| %j | Номер дня года в диапазоне от 001 до 366 | 159 |
| %m | Номер месяца в диапазоне от 01 до 12 | 06 |
| %M | Минуты в диапазоне от 00 до 59 | 24 |
| %S | Секунды в диапазоне от 00 до 60 | 22 |
| %N | Наносекунды в диапазоне от 000000000 до 999999999 | 335288238 |
| %T | Время в формате ЧЧ:ММ:СС в 24-часовом формате | 18:24:22 |
| %u | Номер дня недели в диапазоне от 1 до 7 | 4 |
| %U | Номер недели в году в диапазоне от 00 до 53 | 23 |
| %Y | Полный номер года | 2017 |
| %Z | Обозначение часового пояса | MSK |
Примеры использования
Получение текущих даты и времени
Для получения текущих даты и времени в стандартном формате достаточно выполнить следующую команду:
Утилита выведет аналогичную информацию:
Чт июн 8 15:12:21 MSK 2017
Для вывода даты и/или времени в пользовательском формате достаточно добавить символ + и строку форматирования. Например, для вывода даты и времени может использоваться команда:
В результате будет выведена следующая информация:
Добавление текущей даты в имена создаваемых файлов
Отличным примером использования команды date в сценариях является создание суффикса имени файла для автоматизированного создания нескольких файлов с аналогичными именами. Например, процесс создания создании резервных копий данных. Файл резервной копии данных создается с помощью утилиты tar и сохраняется на жестком диске большого, но не бесконечного объема. Локальная машина носит имя bugler, поэтому данное слово присутствует и в имени файла резервной копии. Файловая система с жесткого диска большого объема скопирована в директорию /bkup. Команда для создания резервных копий будет выглядеть следующим образом:
Она создает сжатый (благодаря параметру -z) файл архива всей файловой системы (благодаря символу / в конце команды) и сохраняет этот файл под именем /bkup/bugler.backup.Sat.tgz. В результате использования команды date при формировании имени файла, файл архива будет перезаписываться ровно через неделю, что позволит сэкономить дисковое пространство — оно будет просто повторно использоваться.
Примечание: конструкция $( ) позволяет использовать вывод дополнительной команды в качестве части основной команды. Альтернативным решением является использование обратных кавычек: . backup `date +%a`.tgz. При этом формат $( ) гораздо проще в использовании.
Установка текущих даты и времени
В том случае, если вы не будете вводить необязательные элементы записи даты и времени, утилита будет считать, что вы выбрали текущий год. Таким образом, в случае исполнения следующей команды:
системные часы будут переведены на 5 июня 2017 года (да, эта статья писалась именно в этот день). Теперь предположим, что нам нужно установить 2018 год. В этом случае команда примет следующий вид:
Использование утилиты на удаленных системах
Для сравнения дат на локальном и удаленном компьютере достаточно настроить вход в удаленную систему без пароля и выполнить команду:
Для установки локального времени на удаленном компьютере может использоваться следующая команда:
Команда date в Linux
Утилита предустановлена во всех дистрибутивах GNU/Linux. В этой статье будут рассмотрены возможности 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 без параметров по умолчанию применяет маску %a %b %d %X %Z. Поскольку все форматы должны быть переданы как один параметр (из-за принципа обработки данных командным интерпретатором Bash), пробелы между ними необходимо экранировать обратным слэшем (\) или взять в кавычки.
Особое внимание следует уделить параметру -d (—date). Его функциональность не слишком очевидна, но при этом наиболее обширна.
Пример 1. Вычисление даты по числу секунд, прошедших с 1 января 1970 года.
Пример 2. Вычисление даты и времени следующего понедельника при указании часового пояса Нью-Йорка в 03:00.
Обратите внимание: указывать название дня недели или месяца можно в любом регистре, в короткой или длинной форме. Параметры next и last обозначают следующий и прошедший, соответственно, ближайшие дни недели.
Пример 3. Если текущий день месяца — последний, сформировать отчет о занятости дискового пространства корневого и домашнего каталога в файл report.
Такой скрипт можно использовать для автоматизации работы с помощью демона crontab или anacron.
Выводы
Команда date Linux является эффективным инструментом работы с датой и временем, с широкой возможностью их расчёта для прошедших или будущих показателей. Также она применяется в написании сценариев в командном интерпретаторе Bash.
Linux date set — установка времени
Чтобы узнать какое время стоит на компьютере в командной строке Linux используют утилиту date. Она позволяет работать с датой и временем.
Синтаксис
data [параметры] [+ управление выводом ФОРМАТ]
Управление выводом это не обязательный параметр. Чтобы его включить необходимо написать знак + и шаблон.
Примеры
Для первого примера введем команду без параметров.
date

Когда синхронизация времени с внешним источником не работает и в локальной сети нет сервера времени, необходимо быстро установить системное время на Линуксе. Для этого используется утилита с параметром «-s». Пусть сейчас точное время 18:00:00.
Тогда установим время так:
Добавим дату. Для этого нужно ввести дату по шаблону год-месяц-число и заключить все в кавычки.
Узнаем дату время изменения файла под именем «file». Для это используем аргумент «-r».
ВАЖНО! Если файл не лежит в текущей директории, необходимо указать путь. В моем случае это /root/file
Работа с часовым поясом
Чтобы вывести на экран время в определенном часовом поясе необходимо указать аргумент TZ по шаблону TZ=’часовой пояс’ date
TZ может принимать значения:
8 примеров команд быстрой даты в Linux
8 примеров команд быстрой даты в Linux
Поддержание точной даты в системе Linux — один из основных навыков, которым должен владеть любой пользователь Linux. Команда Linux date используется для отображения и установки настроек даты и времени в системе Linux. Это руководство дает вам представление о том, как можно использовать команду date для отображения и установки даты в вашей системе Linux.
Базовый синтаксис
Базовый синтаксис команды date представлен ниже.
$ date [option]… [+format]
1) Дата команды без параметров
В своей базовой форме, без каких-либо параметров команды, команда date отображает текущую дату и время, включая день недели, месяц, год, время в формате чч: мм: сс и часовой пояс, как показано ниже.
2) Отображение даты и времени в формате UTC
3) Отображение определенной даты в строковом формате
Вы можете отобразить конкретную дату в строковом формате, используя параметр –date, как показано ниже. Обратите внимание, что это не влияет на дату и время вашей системы, а просто преобразует формат даты в строку.
4) Используйте команду date, чтобы проверить прошлые даты
Команда date также может печатать дату и время в прошлом относительно вашей текущей даты.
Например, чтобы проверить дату 9 дней назад, выполните команду.
Чтобы просмотреть дату двумя неделями ранее, выполните команду:
Чтобы проверить дату три месяца назад, выполните:
Чтобы распечатать дату 3 года назад, запустите:
5) Используйте команду date, чтобы проверить будущие даты
Так же, как вы можете проверять прошлые даты, команда date также позволяет отображать будущие даты.
Например, чтобы проверить завтрашний прогон:
Чтобы узнать, какая дата будет ровно через неделю, запустите:
Чтобы отобразить дату через две недели, выполните:
Чтобы отобразить дату через 4 месяца после запуска:
И чтобы проверить дату через 2 года, запустите:
6) Параметры форматирования даты
Команда date имеет множество опций, позволяющих настроить вывод даты. Ниже перечислены некоторые из доступных вариантов форматирования.
Синтаксис использования опции даты довольно прост:
Например, чтобы напечатать дату в формате yy/mm/dd, запустите
Чтобы распечатать день недели, месяц, год и текущее время:
7) Как установить дату и время
Команда date также позволяет вам установить дату и время. Например, чтобы установить дату и время на 25 июня 2021 года в 11:15, выполните команду:
ЗАМЕТКА:
Использование команды Date в переменной
Иногда при создании сценария оболочки мы сохраняем команду даты в переменной, а затем создаем файл журнала, используя эту переменную, примеры показаны ниже,
Резюме
Мы надеемся, что пролили свет на использование команды даты в Linux, и надеемся, что вы сможете использовать ее для отображения даты в системе и настройки вывода по своему усмотрению.
24 Август 2008
Синтаксис:
Команда date вызванная без параметров, выводит текущие дату и время, а также часовой пояс, установленный в системе:
Пример:
Простой способ установить время и дату, набрать команду:
где:
месяц mm
число dd
часов HH
минут MM
Год yy
А вот как установить дату и время, не меняя (не затрагивая) текущий год:
где:
месяц mm
число dd
часов HH
минут MM
Обратите внимание на кавычки в указанном примере, а лучше просто скопируйте пример и подставьте свои значения.
Для того, чтобы менять дату и время, необходимо иметь права root.
Вместо текущего времени, выводит время описанное в строке string
Построчно обрабатывает файл datefile аналогично опции -d
Время последнего изменения файла file
Выведет дату в стандарте RFC-822
Устанавливает время, равное string
Вывод или установка времени в формате UTC.
Информация о версии программы.
Описание опции FORMAT
Данная опция является текстовой строкой, в которой определенным образом обрабатываются следующие последовательности символов:
— название дня недели полностью
— название месяца сокращенно, ту же информацию выведет последовательность %h
— название месяца полностью
— дата и время по местному времени
— дата в формате mm/dd/yy
— день месяца 1-31 (без нулей в первых девяти числах месяца).
— день года по юлианскому календарю 001-36
— часы 0-23 (без предшествующих нулей в первых десяти часах)
— часы 0-12 (без предшествующих нулей в первых десяти часах)
— символ новой страницы newline
— время в 12-часовом формате hh:mm:ss[AM]PM
— timestamp (количество секунд прошедшее с 00:00:00 1 января 1970 года UTC)
— время в 24-часовом формате hh:mm:ss
— номер недели в году, с воскресеньем в качестве первого дня недели 00-53
— номер недели в году, с понедельником в качестве первого дня недели 01-52
— день недели 0-6 где ноль является воскресеньем
— номер недели в году, с понедельником в качестве первого дня недели 00-53
— дата в формате mm/dd/yyyy
— время в формате %H:%M:%S
— две последние цифры года
— год в виде четырех цифр
— часовой пояс, если он установлен в системе.
— числовой стиль часового пояса в стандарте RFC-822
— (дефис): число не заполняется предшествующими нулями
— (подчеркивание): вместо предшествующих нулей подставляются пробелы.








Использование команды Date в переменной