Cum să afișați data și ora în terminalul Linux (și să le utilizați în scripturile Bash)

Comanda date se găsește în shell-ul Bash, care este shell-ul implicit în majoritatea distribuțiilor Linux și chiar în macOS. Acest tutorial vă arată cum să stăpâniți data pe linia de comandă și cum o puteți utiliza în script-urile shell pentru a face mai mult decât pur și simplu imprimați ora.

Rulați comanda data pentru a vedea aceste informații. Tipărește data și ora curente pentru fusul orar:

date

Formatarea implicită pare puțin ciudată. De ce nu este tipărit anul după lună și zi, în loc să fie etichetat la sfârșit, în spatele fusului orar? Nu vă temeți: dacă este controlul asupra formatului de ieșire pe care îl doriți, data îl oferă în pică. Există mai mult de 40 de opțiuni pe care le puteți transmite până în prezent pentru a-i instrui să-și formateze rezultatul exact așa cum doriți.

Pentru a utiliza oricare dintre opțiuni, tastați data, un spațiu, un semn plus + și opțiunea care include semnul principal de procent. Opțiunea %c (date și oră în format local) face ca data și ora să fie tipărite în formatul normalizat asociat localului dvs. Localitatea dvs. este stabilită de informațiile geografice și culturale pe care le-ați furnizat când v-ați instalat sistemul de operare. Localitatea guvernează lucruri precum simbolul monedei, dimensiunile hârtiei, fusul orar și alte norme culturale.

date +%c

Anul apare acum într-o poziție mai naturală în producție.

Puteți trece mai multe opțiuni până în prezent simultan. O secvență de opțiuni se numește șir de format. Pentru a vedea numele zilei (%A), ziua lunii (%d) și numele lunii (%B), utilizați această comandă:

date +%A%d%B

A funcționat, dar este urât. Nicio problemă, putem include spații atâta timp cât înfășurăm întregul șir de format între ghilimele. Rețineți că + iese în afara ghilimelelor.

date +"%A %d %B"

Puteți adăuga text la șirul de format, astfel:

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

Derularea în sus și în jos prin dată pagina de manual căutarea opțiunii dorite devine curând obositoare. Am împărțit opțiunile în grupuri pentru a vă ajuta să vă găsiți mai ușor calea în jurul lor.

Opțiuni pentru afișarea datei și orei

%c: Tipărește data și ora în formatul local, inclusiv fusul orar.

  3 moduri de a securiza un server SSH pe Linux

Opțiuni pentru afișarea datei

%D: Imprimă data în format mm/zz/aa.
%F: Tipărește data în format aaaa-mm-zz.
%x: Tipărește data în formatul pentru localitatea dvs.

Opțiuni pentru afișarea zilei

%a: Tipărește numele zilei, prescurtat în Luni, Marți, Miercuri etc.
%A: Tipărește numele complet al zilei, luni, marți, miercuri etc.
%u: Tipărește numărul zilei săptămânii, unde luni=1, marți=2, miercuri=3 etc.
%w: Imprimă numărul zilei săptămânii, unde duminică=0, luni=1, marți=2 etc.
%d: Tipărește ziua lunii, cu zero la început (01, 02 … 09), dacă este necesar.
%e: Tipărește ziua lunii, cu un spațiu de început („1”, „2” … „9”), dacă este necesar. Rețineți că apostrofele nu sunt tipărite.
%j: Imprimă ziua anului, cu până la două zerouri la început, dacă este necesar.

Opțiuni pentru afișarea săptămânii

%U: Imprimă numărul săptămânii din an, considerând duminica prima zi a săptămânii. De exemplu, a treia săptămână a anului, a douăzecea săptămână a anului etc.
%V: Imprimă numărul ISO al săptămânii din an, luând în considerare ziua de luni ca prima zi a săptămânii.
%W: Numărul săptămânii din an, luând în considerare ziua de luni ca prima zi a săptămânii.

Opțiuni pentru afișarea lunii

%b sau %h: Tipărește numele lunii prescurtat în ianuarie, februarie, martie etc.
%B: tipărește numele complet al lunii, ianuarie, februarie, martie etc.
%m: Tipărește numărul lunii, cu un zero înainte, dacă este necesar, 01, 02, 03 … 12.

Opțiuni pentru afișarea anului

%C: Tipărește secolul fără anul. În 2019 ar fi tipărit 20.
%y: Tipărește anul ca două cifre. în 2019 va tipări 19.
%Y: Imprimă anul ca patru cifre.

  Cele mai bune 6 instrumente de gestionare a fotografiilor pentru Linux

Opțiuni pentru afișarea orei

%T: Imprimă ora ca HH:MM:SS.
%R: Imprimă ora și minutele ca HH:MM fără secunde, folosind ceasul de 24 de ore.
%r: Imprimă ora în funcție de localitatea dvs., folosind ceasul de 12 ore și un indicator dimineața sau după-amiaza.
%X: Imprimă ora în funcție de localitatea dvs., folosind ceasul de 24 de ore. Ar fi. Rețineți că în timpul testării această opțiune s-a comportat exact ca %r, așa cum se arată mai jos. Pe o mașină Linux configurată pentru localitatea Regatului Unit și setată la GMT, a tipărit ora, folosind ceasul de 24 de ore fără indicator AM sau PM, așa cum era de așteptat.

Opțiuni pentru afișarea orei

%H: Imprimă ora 00, 01, 02…23.
%I: Imprimă ora folosind ceasul de 12 ore, 00, 01, 02 … 12, cu un zero înainte, dacă este necesar.

Opțiuni pentru afișarea minutelor

%M: tipărește minutul, 01, 02, 03 … 59, cu un zero înainte, dacă este necesar.

Opțiuni pentru afișarea secundelor

%s: Imprimă numărul de secunde de la 1970-01-01 00:00:00, începutul Epoca Unix.
%S: Imprimă secundele, 01, 02, 03 … 59, cu un zero înainte, dacă este necesar.
%N: Imprimă Nanosecunde.

Opțiuni pentru afișarea informațiilor despre fusul orar

%z: Imprimă diferența de timp dintre fusul orar și UTC.
%:z: Imprimă diferența de timp dintre fusul orar și UTC, cu un : între ore și minute. Rețineți: între semnul % și z.
%::z: Imprimă diferența de timp dintre fusul orar și UTC, cu a : între ore, minute și secunde. Observați :: între semnul % și z .
%Z: Tipărește numele alfabetic al fusului orar.

Opțiuni legate de formatare

%p: Tipărește indicatorul AM sau PM cu majuscule.
%P: Tipărește indicatorul am sau pm cu litere mici. Observați ciudația cu aceste două opțiuni. Un p minuscul dă ieșire cu majuscule, un P majuscul oferă ieșire cu litere mici.
%t: Imprimă o filă.
%n: Imprimă o nouă linie.

Opțiuni pentru modificarea altor opțiuni

Acești modificatori pot fi inserați între % și litera de opțiune a altor opțiuni pentru a le modifica afișarea. De exemplu, %-S ar elimina zeroul de început pentru valorile secunde cu o singură cifră.

  Cei mai buni 4 clienți Github pentru Linux

–: O singură cratimă previne completarea cu zero pentru valorile cu o singură cifră.
_: un singur caracter de subliniere adaugă spații de început pentru valorile cu o singură cifră.
0: furnizează zerouri la început pentru valorile cu o singură cifră.
^: Folosește majuscule, dacă este posibil (nu toate opțiunile respectă acest modificator).
#: Folosiți opțiunea opusă majusculelor implicite, dacă este posibil (nu toate opțiunile respectă acest modificator).

Încă două trucuri îngrijite

Pentru a obține ora ultimei modificări a unui fișier, utilizați opțiunea -r (referință). Rețineți că aceasta folosește un – (cratima) în loc de semnul % și nu necesită semnul +. Încercați această comandă în folderul dvs. de acasă:

date -r .bashrc

Setarea TZ vă permite să vă schimbați fusul orar pe durata unei singure comenzi.

TZ=GMT date +%c

Utilizarea datei în scripturi

Activarea unui script shell Bash pentru a tipări ora și data este trivială. Creați un fișier text cu următorul conținut și salvați-l ca 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

Tastați următoarea comandă pentru a seta permisiunile de execuție și pentru a face scriptul executabil.

chmod +x gd.sh

Rulați scriptul cu această comandă:

./gd.sh

Putem folosi comanda date pentru a furniza un marcaj de timp. Scriptul afișat va crea un director cu marca temporală ca nume. Apoi va copia toate fișierele text din folderul curent în el. Rulând periodic acest script, putem face un instantaneu al fișierelor noastre text. De-a lungul timpului, vom construi o serie de foldere cu versiuni diferite ale fișierelor noastre text în ele.

Rețineți că acesta nu este un sistem de rezervă robust, este doar pentru scopuri ilustrative.

Creați un fișier text cu următorul conținut și salvați-l ca 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

Tastați următoarea comandă pentru a seta permisiunile de execuție și pentru a face scriptul executabil.

chmod +x snapshot.sh

Rulați scriptul cu această comandă:

./snapshot.sh

Veți vedea că a fost creat un director. Numele său este data și ora la care a fost executat scriptul. În acel director se află copii ale fișierelor text.

Având un pic de gândire și creativitate, chiar și comanda umilă a întâlnirii poate fi folosită în mod productiv.