Команда date находится в оболочке Bash, которая является оболочкой по умолчанию в большинстве дистрибутивов Linux и даже в macOS. В этом руководстве показано, как настроить дату в командной строке и как использовать ее в сценариях оболочки, чтобы делать больше, чем просто выводить время.
Запустите команду date, чтобы увидеть эту информацию. Он печатает текущую дату и время для вашего часового пояса:
date
Форматирование по умолчанию выглядит немного глупо. Почему год не печатается после месяца и дня, а не отмечается в конце, за часовым поясом? Не бойтесь: если он контролирует формат вывода, который вам нужен, date доставляет его в избытке. Есть более 40 опций, которые вы можете передать на сегодняшний день, чтобы дать указание форматировать вывод именно так, как вы хотите.
Чтобы использовать любой из параметров, введите дату, пробел, знак плюса + и параметр, включая начальный знак процента. Параметр% c (данные и время в формате локали) приводит к тому, что дата и время печатаются в нормализованном формате, связанном с вашей локалью. Ваш регион определяется географической и культурной информацией, которую вы предоставили при установке операционной системы. Регион определяет такие вещи, как символ валюты, размеры бумаги, часовой пояс и другие культурные нормы.
date +%c
Теперь год отображается в выводе в более естественном положении.
На сегодняшний день можно передать сразу несколько вариантов. Последовательность параметров называется строкой формата. Чтобы увидеть название дня (% A), день месяца (% d) и название месяца (% B), используйте эту команду:
date +%A%d%B
Это сработало, но некрасиво. Нет проблем, мы можем включать пробелы, если заключим всю строку формата в кавычки. Обратите внимание, что + выходит за рамки кавычек.
date +"%A %d %B"
Вы можете добавить текст в строку формата, например:
date +"Today is: %A %d %B"
Прокрутка даты вверх и вниз страница руководства поиск нужного варианта вскоре становится утомительным. Мы разбили варианты на группы, чтобы вам было проще их обойти.
Оглавление
Параметры отображения даты и времени
% c: печатает дату и время в формате для вашего языка, включая часовой пояс.
Варианты отображения даты
% D: печатает дату в формате мм / дд / гг.
% F: печатает дату в формате гггг-мм-дд.
% x: печатает дату в формате для вашего региона.
Варианты отображения дня
% a: печатает название дня, сокращенное до понедельника, вторника, среды и т. д.
% A: печатает полное название дня, понедельник, вторник, среду и т. Д.
% u: выводит номер дня недели, где понедельник = 1, вторник = 2, среда = 3 и т. д.
% w: выводит номер дня недели, где воскресенье = 0, понедельник = 1, вторник = 2 и т. д.
% d: печатает день месяца с нулем в начале (01, 02… 09), если требуется.
% e: выводит день месяца с пробелом в начале (‘1’, ‘2’… ‘9’), если требуется. Обратите внимание, что апострофы не печатаются.
% j: печатает день года с двумя ведущими нулями, если требуется.
Варианты отображения недели
% U: выводит номер недели в году, считая воскресенье первым днем недели. Например, третья неделя года, двадцатая неделя года и т. Д.
% V: выводит номер недели года по стандарту ISO, считая понедельник первым днем недели.
% W: номер недели в году, считая понедельник первым днем недели.
Варианты отображения месяца
% b или% h: печатает название месяца, сокращенное до января, февраля, марта и т. д.
% B: печатает полное название месяца, января, февраля, марта и т. Д.
% m: печатает номер месяца с ведущим нулем, если требуется 01, 02, 03… 12.
Варианты отображения года
% C: Печатает век без года. В 2019 году он напечатает 20.
% y: выводит год в виде двух цифр. в 2019 году напечатает 19.
% Y: вывод года в виде четырех цифр.
Варианты отображения времени
% T: печатает время в формате ЧЧ: ММ: СС.
% R: часы и минуты печатаются в формате ЧЧ: ММ без секунд в 24-часовом формате.
% r: печатает время в соответствии с вашим языком, используя 12-часовой формат и индикатор до или после полудня.
% X: печать времени в соответствии с вашим языком в 24-часовом формате. Якобы. Обратите внимание, что во время тестирования эта опция вела себя точно так же, как% r, как показано ниже. На компьютере с Linux, настроенном для локали Великобритании и установленном на GMT, он печатал время, используя 24-часовые часы без индикатора AM или PM, как и ожидалось.
Варианты отображения часа
% H: печать часов 00, 01, 02… 23.
% I: Печатает час в 12-часовом формате 00, 01, 02… 12 с начальным нулем, если требуется.
Параметры отображения минут
% M: выводит минуты 01, 02, 03… 59 с нулем в начале, если требуется.
Варианты отображения секунд
% s: выводит количество секунд с 1970-01-01 00:00:00, начало Эпоха Unix.
% S: печатает секунды 01, 02, 03… 59 с нулем в начале, если требуется.
% N: печатает наносекунды.
Параметры отображения информации о часовом поясе
% z: печатает разницу во времени между вашим часовым поясом и UTC.
%: z: печатает разницу во времени между вашим часовым поясом и временем в формате UTC с: между часами и минутами. Обратите внимание на: между знаком% и z.
% :: z: выводит разницу во времени между вашим часовым поясом и временем в формате UTC с: между часами, минутами и секундами. Обратите внимание на :: между знаком% и z.
% Z: печатает буквенное название часового пояса.
Параметры, связанные с форматированием
% p: вывод индикатора AM или PM в верхнем регистре.
% P: Печатает индикатор am или pm в нижнем регистре. Обратите внимание на причуду этих двух вариантов. Строчная буква p соответствует прописной, а заглавная — строчной.
% t: печать табуляции.
% n: печатает новую строку.
Параметры для изменения других параметров
Эти модификаторы могут быть вставлены между% и буквой параметра других параметров, чтобы изменить их отображение. Например,% -S удалит ведущий ноль для однозначных значений секунд.
-: одиночный дефис предотвращает заполнение нулями однозначных значений.
_: одиночное подчеркивание добавляет ведущие пробелы для однозначных значений.
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
Мы можем использовать команду 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
Вы увидите, что каталог был создан. Его имя — это дата и время выполнения сценария. Внутри этого каталога находятся копии текстовых файлов.
Если немного подумать и проявить изобретательность, можно продуктивно использовать даже скромную команду свидания.