Як відобразити дату та час у терміналі Linux (і використовувати їх у сценаріях Bash)

Команда date знаходиться в оболонці Bash, яка є оболонкою за замовчуванням у більшості дистрибутивів Linux і навіть у macOS. У цьому підручнику показано, як оволодіти датою в командному рядку і як ви можете використовувати її в сценаріях оболонки, щоб робити більше, ніж просто друкувати час.

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

date

Форматування за замовчуванням виглядає трохи безглуздо. Чому рік не друкується після місяця та дня, а не в кінці, за часовим поясом? Не бійтеся: якщо це контроль над форматом виводу, який ви хочете, дата надає його в піку. Існує понад 40 параметрів, які ви можете передати на сьогоднішній день, щоб доручити йому відформатувати вихідні дані саме так, як вам потрібно.

Щоб використовувати будь-який з параметрів, введіть дату, пробіл, знак плюса + і параметр, що включає головний знак відсотка. Параметр %c (дані та час у форматі мовного стандарту) дає змогу друкувати дату та час у нормалізованому форматі, пов’язаному з вашим мовним стандартом. Ваш локаль визначається географічною та культурною інформацією, яку ви надали під час встановлення операційної системи. Місцевий стандарт регулює такі речі, як символ валюти, розміри паперу, часовий пояс та інші культурні норми.

date +%c

Рік тепер постає в більш природному положенні у виході.

Ви можете передати кілька варіантів на сьогоднішній день одночасно. Послідовність параметрів називається рядком форматування. Щоб побачити назву дня (%A), дня місяця (%d) і назви місяця (%B), скористайтеся цією командою:

date +%A%d%B

Це спрацювало, але це негарно. Немає проблем, ми можемо включати пробіли, якщо ми укладаємо весь рядок формату в лапки. Зверніть увагу, що + виходить за межі лапок.

date +"%A %d %B"

Ви можете додати текст до рядка форматування, наприклад:

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

Прокручування дати вгору та вниз сторінка людини шукати потрібний варіант незабаром стає втомливим. Ми об’єднали варіанти в групи, щоб допомогти вам легше орієнтуватися в них.

Параметри відображення дати та часу

%c: друкує дату та час у форматі для вашої мови, включаючи часовий пояс.

  6 найкращих плагінів VLC для покращення відтворення відео в Linux

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

%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: друкує рік у вигляді чотирьох цифр.

  Як налаштувати сервер uTorrent на Linux

Параметри відображення часу

%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: друкує індикатор ранку або вечора у нижньому регістрі. Зверніть увагу на особливість цих двох варіантів. Нижній регістр p дає виведення у верхньому регістрі, великий P — у нижньому регістрі.
%t: друкує вкладку.
%n: друкує новий рядок.

Параметри для зміни інших параметрів

Ці модифікатори можна вставити між % і літерою опції інших параметрів, щоб змінити їх відображення. Наприклад, %-S видалить початковий нуль для однозначних значень секунд.

  Як грати в ігри Playstation на 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

Ми можемо використовувати команду 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

Ви побачите, що каталог створено. Його назва — це дата і час виконання сценарію. Усередині цього каталогу знаходяться копії текстових файлів.

Якщо трохи подумати та проявити креативність, навіть скромну команду дати можна продуктивно використати.