Как да покажете датата и часа в терминала на Linux (и да го използвате в Bash скриптове)

Командата дата се намира в обвивката на 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"

Превъртане нагоре и надолу през датата man страница търсенето на опцията, която искате, скоро става досадно. Разделихме опциите в групи, за да ви помогнем да се ориентирате по-лесно.

Опции за показване на дата и час

%c: Отпечатва датата и часа във формата за вашия локал, включително часовата зона.

  4 най-добри алтернативи на Libre Office на Linux

Опции за показване на датата

%D: Отпечатва датата във формат mm/dd/yy.
%F: Отпечатва датата във формат yyyy-mm-dd.
%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: Отпечатва годината като четири цифри.

  Как да инсталирате Solus 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: Отпечатва индикатора am или pm с малки букви. Обърнете внимание на странността с тези две опции. Малки букви p извеждат с главни букви, а главни букви P извеждат с малки букви.
%t: Отпечатва раздел.
%n: Отпечатва нов ред.

Опции за промяна на други опции

Тези модификатори могат да бъдат вмъкнати между % и буквата на опцията на други опции, за да променят тяхното показване. Например, %-S ще премахне водещата нула за едноцифрени секунди.

  Как да инсталирате Zettlr Markdown редактор на Linux

–: Едно тире предотвратява допълването на нула на едноцифрени стойности.
_: едно долно черта добавя водещи интервали за едноцифрени стойности.
0: Предоставя водещи нули за едноцифрени стойности.
^: Използва главни букви, ако е възможно (не всички опции спазват този модификатор).
#: Използвайте за опцията обратен на главния случай по подразбиране, ако е възможно (не всички опции спазват този модификатор).

Още два чисти трика

За да получите последното време за промяна на даден файл, използвайте опцията -r (референтна). Имайте предвид, че това използва – (тире) вместо знак % и не изисква знак +. Опитайте тази команда във вашата домашна папка:

date -r .bashrc

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

TZ=GMT date +%c

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

Разрешаването на Bash shell скрипт за отпечатване на часа и датата е тривиално. Създайте текстов файл със следното съдържание и го запазете като 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

Ще видите, че е създадена директория. Името му е датата и часа, в които скриптът е бил изпълнен. Вътре в тази директория има копия на текстовите файлове.

Като се има предвид малко мисъл и креативност, дори и скромната команда за дата може да се използва продуктивно.