Как отображать дату и время в терминале Linux (и использовать их в сценариях Bash)

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

Запустите команду date, чтобы увидеть эту информацию. Он печатает текущую дату и время для вашего часового пояса:

date

Вывод команды даты

Форматирование по умолчанию выглядит немного глупо. Почему год не печатается после месяца и дня, а не отмечается в конце, за часовым поясом? Не бойтесь: если он контролирует формат вывода, который вам нужен, date доставляет его в избытке. Есть более 40 опций, которые вы можете передать на сегодняшний день, чтобы дать указание форматировать вывод именно так, как вы хотите.

Чтобы использовать любой из параметров, введите дату, пробел, знак плюса + и параметр, включая начальный знак процента. Параметр% c (данные и время в формате локали) приводит к тому, что дата и время печатаются в нормализованном формате, связанном с вашей локалью. Ваш регион определяется географической и культурной информацией, которую вы предоставили при установке операционной системы. Регион определяет такие вещи, как символ валюты, размеры бумаги, часовой пояс и другие культурные нормы.

date +%c

Вывод команды даты с опцией c

Теперь год отображается в выводе в более естественном положении.

На сегодняшний день можно передать сразу несколько вариантов. Последовательность параметров называется строкой формата. Чтобы увидеть название дня (% A), день месяца (% d) и название месяца (% B), используйте эту команду:

date +%A%d%B

Вывод команды даты с параметрами A d B

Это сработало, но некрасиво. Нет проблем, мы можем включать пробелы, если заключим всю строку формата в кавычки. Обратите внимание, что + выходит за рамки кавычек.

date +"%A %d %B"

Вывод команды даты с опцией A d B с пробелами

Вы можете добавить текст в строку формата, например:

date +"Today is: %A %d %B"

Вывод команды данных с добавленным пользователем текстом

Прокрутка даты вверх и вниз страница руководства поиск нужного варианта вскоре становится утомительным. Мы разбили варианты на группы, чтобы вам было проще их обойти.

Параметры отображения даты и времени

% c: печатает дату и время в формате для вашего языка, включая часовой пояс.

  3 простых способа попробовать Linux для пользователей Windows

Вывод команды даты

Варианты отображения даты

% D: печатает дату в формате мм / дд / гг.
% F: печатает дату в формате гггг-мм-дд.
% x: печатает дату в формате для вашего региона.

Вывод команды даты с параметрами DF x

Варианты отображения дня

% a: печатает название дня, сокращенное до понедельника, вторника, среды и т. д.
% A: печатает полное название дня, понедельник, вторник, среду и т. Д.
% u: выводит номер дня недели, где понедельник = 1, вторник = 2, среда = 3 и т. д.
% w: выводит номер дня недели, где воскресенье = 0, понедельник = 1, вторник = 2 и т. д.
% d: печатает день месяца с нулем в начале (01, 02… 09), если требуется.
% e: выводит день месяца с пробелом в начале (‘1’, ‘2’… ‘9’), если требуется. Обратите внимание, что апострофы не печатаются.
% j: печатает день года с двумя ведущими нулями, если требуется.

Вывод команды даты с параметрами A uwdej

Варианты отображения недели

% U: выводит номер недели в году, считая воскресенье первым днем ​​недели. Например, третья неделя года, двадцатая неделя года и т. Д.
% V: выводит номер недели года по стандарту ISO, считая понедельник первым днем ​​недели.
% W: номер недели в году, считая понедельник первым днем ​​недели.

Вывод команды даты с параметрами UVW

Варианты отображения месяца

% b или% h: печатает название месяца, сокращенное до января, февраля, марта и т. д.
% B: печатает полное название месяца, января, февраля, марта и т. Д.
% m: печатает номер месяца с ведущим нулем, если требуется 01, 02, 03… 12.

Вывод команды даты с параметрами bh B m

Варианты отображения года

% C: Печатает век без года. В 2019 году он напечатает 20.
% y: выводит год в виде двух цифр. в 2019 году напечатает 19.
% Y: вывод года в виде четырех цифр.

  Как обновить подсистему Windows для Linux в Windows 10

Вывод команды даты с параметрами C y Y

Варианты отображения времени

% T: печатает время в формате ЧЧ: ММ: СС.
% R: часы и минуты печатаются в формате ЧЧ: ММ без секунд в 24-часовом формате.
% r: печатает время в соответствии с вашим языком, используя 12-часовой формат и индикатор до или после полудня.
% X: печать времени в соответствии с вашим языком в 24-часовом формате. Якобы. Обратите внимание, что во время тестирования эта опция вела себя точно так же, как% r, как показано ниже. На компьютере с Linux, настроенном для локали Великобритании и установленном на GMT, он печатал время, используя 24-часовые часы без индикатора AM или PM, как и ожидалось.

Вывод команды даты с параметрами TR r X

Варианты отображения часа

% H: печать часов 00, 01, 02… 23.
% I: Печатает час в 12-часовом формате 00, 01, 02… 12 с начальным нулем, если требуется.

Вывод команды даты с параметрами HI

Параметры отображения минут

% M: выводит минуты 01, 02, 03… 59 с нулем в начале, если требуется.

Вывод команды даты с параметрами M

Варианты отображения секунд

% s: выводит количество секунд с 1970-01-01 00:00:00, начало Эпоха Unix.
% S: печатает секунды 01, 02, 03… 59 с нулем в начале, если требуется.
% N: печатает наносекунды.

Вывод команды даты с опциями s SN

Параметры отображения информации о часовом поясе

% z: печатает разницу во времени между вашим часовым поясом и UTC.
%: z: печатает разницу во времени между вашим часовым поясом и временем в формате UTC с: между часами и минутами. Обратите внимание на: между знаком% и z.
% :: z: выводит разницу во времени между вашим часовым поясом и временем в формате UTC с: между часами, минутами и секундами. Обратите внимание на :: между знаком% и z.
% Z: печатает буквенное название часового пояса.

Вывод команды даты с параметрами часового пояса

Параметры, связанные с форматированием

% p: вывод индикатора AM или PM в верхнем регистре.
% P: Печатает индикатор am или pm в нижнем регистре. Обратите внимание на причуду этих двух вариантов. Строчная буква p соответствует прописной, а заглавная — строчной.
% t: печать табуляции.
% n: печатает новую строку.

Вывод команды даты с индикатором AM PM и параметрами форматирования

Параметры для изменения других параметров

Эти модификаторы могут быть вставлены между% и буквой параметра других параметров, чтобы изменить их отображение. Например,% -S удалит ведущий ноль для однозначных значений секунд.

  6 лучших операционных систем Linux для обеспечения конфиденциальности

-: одиночный дефис предотвращает заполнение нулями однозначных значений.
_: одиночное подчеркивание добавляет ведущие пробелы для однозначных значений.
0: предоставляет ведущие нули для однозначных значений.
^: Если возможно, используются прописные буквы (не все параметры соответствуют этому модификатору).
#: По возможности используйте для параметра регистр, противоположный стандартному (не все параметры соответствуют этому модификатору).

Вывод команды даты с параметрами форматирования

Еще два изящных трюка

Чтобы узнать время последней модификации файла, используйте параметр -r (ссылка). Обратите внимание, что здесь используется знак — (дефис) вместо знака% и не требуется знак +. Попробуйте эту команду в своей домашней папке:

date -r .bashrc

Вывод команды даты с опцией времени модификации файла

Настройка TZ позволяет вам изменять часовой пояс на время одной команды.

TZ=GMT date +%c

Вывод команды даты для другого часового пояса

Использование даты в скриптах

Включение сценария оболочки Bash для печати времени и даты тривиально. Создайте текстовый файл со следующим содержимым и сохраните его как gd.sh.

#!/bin/bash

TODAY=$(date +"Today is %A, %d of %B")
TIMENOW=$(date +"The local time is %r")
TIME_UK=$(TZ=BST date +"The time in the UK is %r")

echo $TODAY
echo $TIMENOW
echo $TIME_UK

Введите следующую команду, чтобы установить разрешения на выполнение и сделать скрипт исполняемым.

chmod +x gd.sh

Запустите сценарий с помощью этой команды:

./gd.sh

Вывод скрипта gd.sh

Мы можем использовать команду date для предоставления отметки времени. Показанный сценарий создаст каталог с отметкой времени в качестве имени. Затем он скопирует в нее все текстовые файлы из текущей папки. Периодически запуская этот скрипт, мы можем делать снимки наших текстовых файлов. Со временем мы создадим серию папок с разными версиями наших текстовых файлов.

Обратите внимание, что это не надежная система резервного копирования, это просто для иллюстративных целей.

Создайте текстовый файл со следующим содержимым и сохраните его как snapshot.sh.

#!/bin/bash

# obtain the date and time
date_stamp=$(date +"%F-%H-%M-%S")

# make a directory with that name
mkdir "$date_stamp"

# copy the files from the current folder into it
cp *.txt "$date_stamp"

# all done, report back and exit
echo "Text files copied to directory: "$date_stamp

Введите следующую команду, чтобы установить разрешения на выполнение и сделать скрипт исполняемым.

chmod +x snapshot.sh

Запустите сценарий с помощью этой команды:

./snapshot.sh

Эффект от запуска скрипта snapshot.sh

Вы увидите, что каталог был создан. Его имя — это дата и время выполнения сценария. Внутри этого каталога находятся копии текстовых файлов.

Если немного подумать и проявить изобретательность, можно продуктивно использовать даже скромную команду свидания.