Команда date: ваш персональний годинник у терміналі Linux
Команда date
є вбудованою у Bash, стандартну оболонку для більшості дистрибутивів Linux, а також macOS. У цій статті ми розглянемо, як використовувати команду date
у командному рядку, і як ви можете інтегрувати її у свої скрипти для виконання різноманітних задач, окрім простого відображення часу.
Просто введіть date
, щоб отримати поточну дату та час вашого часового поясу:
date
Стандартний вигляд може здатися дещо незвичним. Чому рік розташований в кінці, після часового поясу, а не після місяця та дня? Не хвилюйтеся: команда date
дозволяє налаштувати формат виведення. Існує понад 40 параметрів, які можна використовувати для того, щоб вивести дату у потрібному вам форматі.
Щоб використати будь-який з цих параметрів, введіть date
, пробіл, знак плюс +
, і сам параметр, який завжди починається зі знака відсотка %
. Наприклад, параметр %c
(дата та час у форматі мовного стандарту) дозволяє вивести дату та час у форматі, що відповідає вашим налаштуванням мови. Ваш мовний стандарт (локаль) визначається географічною та культурною інформацією, яку ви вказали під час встановлення операційної системи. Він регулює такі аспекти, як символ валюти, розмір паперу, часовий пояс та інші культурні норми.
date +%c
Тепер рік відображається у більш звичному для нас місці.
Можна передати декілька параметрів команді date
одночасно. Послідовність параметрів називається рядком форматування. Наприклад, щоб вивести назву дня (%A
), день місяця (%d
) та назву місяця (%B
), використовуйте наступну команду:
date +%A%d%B
Вивід є, але він не дуже гарний. Ми можемо включити пробіли, якщо візьмемо весь рядок формату в лапки. Зверніть увагу, що знак +
залишається поза лапками.
date +"%A %d %B"
Ви також можете додати текст до рядка форматування, наприклад:
date +"Сьогодні: %A %d %B"
Перегляд сторінки man для пошуку потрібного варіанту може швидко набриднути. Тому ми згрупували параметри для вашої зручності.
Параметри для виведення дати та часу
%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
: Виводить годину у 24-годинному форматі (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
: Виводить індикатор ранку або вечора у нижньому регістрі. Зверніть увагу на особливість цих двох варіантів. Нижній регістр p
дає виведення у верхньому регістрі, великий P
— у нижньому регістрі.%t
: Виводить табуляцію.%n
: Виводить новий рядок.
Параметри для зміни інших параметрів
Ці модифікатори можна вставити між %
і літерою опції інших параметрів, щоб змінити їх відображення. Наприклад, %-S
видалить початковий нуль для однозначних значень секунд.
-
: Дефіс запобігає нульовому заповненню однозначних значень._
: Підкреслення додає пробіли для однозначних значень.0
: Забезпечує початкові нулі для однозначних значень.^
: Використовує верхній регістр, якщо можливо (не всі параметри відповідають цьому модифікатору).#
: Якщо можливо, використовує для параметра регістр, протилежний стандартному (не всі параметри відповідають цьому модифікатору).
Два корисних трюки
Щоб отримати час останньої зміни файлу, використовуйте параметр -r
(посилання). Зауважте, що тут використовується -
(дефіс) замість знака %
, і для цього не потрібен знак +
. Спробуйте цю команду у своїй домашній папці:
date -r .bashrc
Змінна TZ
дозволяє змінювати часовий пояс для однієї команди:
TZ=GMT date +%c
Використання дати у скриптах
Додати вивід дати та часу у скрипт Bash дуже просто. Створіть текстовий файл з наступним вмістом і збережіть його як gd.sh
.
#!/bin/bash TODAY=$(date +"Сьогодні %A, %d %B") TIMENOW=$(date +"Місцевий час: %r") TIME_UK=$(TZ=BST date +"Час у Великобританії: %r") echo $TODAY echo $TIMENOW echo $TIME_UK
Виконайте наступну команду, щоб надати скрипту права на виконання:
chmod +x gd.sh
Запустіть скрипт за допомогою команди:
./gd.sh
Ми можемо використовувати команду date
для створення міток часу. Наступний скрипт створить каталог з міткою часу як назву. Потім він скопіює усі текстові файли з поточної папки у цей каталог. Періодично запускаючи цей скрипт, ми можемо створити резервні копії наших текстових файлів. З часом у нас з’явиться серія папок з різними версіями файлів.
Зверніть увагу, що це не надійна система резервного копіювання, а лише приклад.
Створіть текстовий файл з наступним вмістом і збережіть його як snapshot.sh
.
#!/bin/bash # отримуємо дату та час date_stamp=$(date +"%F-%H-%M-%S") # створюємо каталог з цією назвою mkdir "$date_stamp" # копіюємо файли з поточної папки у цей каталог cp *.txt "$date_stamp" # все зроблено, повідомляємо про це та виходимо echo "Текстові файли скопійовано до каталогу: "$date_stamp
Виконайте команду нижче, щоб зробити скрипт виконуваним:
chmod +x snapshot.sh
Запустіть скрипт за допомогою наступної команди:
./snapshot.sh
Ви побачите, що створено каталог. Його назва відповідає даті та часу запуску скрипта. Всередині цього каталогу знаходяться копії ваших текстових файлів.
Трохи поміркувавши та проявивши креативність, навіть таку просту команду, як date
, можна використовувати для продуктивної роботи.