Komanda date
je sastavni deo Bash ljuske, koja je podrazumevana ljuska u većini Linux distribucija, kao i u macOS-u. Ovaj vodič će vam pokazati kako da efikasno koristite date
komandu u terminalu i kako je možete primeniti u shell skriptama za kompleksnije zadatke od običnog prikazivanja trenutnog vremena.
Pokretanjem komande date
bez dodatnih argumenata, dobićete prikaz trenutnog datuma i vremena, prilagođenog vašoj vremenskoj zoni:
date
Podrazumevani format izlaza možda ne odgovara svima. Možda biste želeli da godina bude prikazana na drugom mestu, recimo iza meseca i dana, a ne na samom kraju, nakon vremenske zone. Ne brinite, date
komanda nudi potpunu kontrolu nad formatom izlaza. Na raspolaganju vam je preko 40 opcija koje možete koristiti da precizno formatirate izlaz kako vam odgovara.
Da biste koristili opcije za formatiranje, unesite date
, zatim razmak, znak plus +
i opciju, koja obavezno počinje znakom procenta %
. Na primer, opcija %c
(datum i vreme u formatu vašeg lokaliteta) će prikazati datum i vreme u standardizovanom formatu koji odgovara vašim jezičkim postavkama. Lokalitet se definiše na osnovu geografskih i kulturnih informacija koje ste uneli prilikom instalacije operativnog sistema. Lokalitet utiče na stvari poput valute, formata papira, vremenske zone i drugih kulturnih normi.
date +%c
Sada se godina pojavljuje na logičnijem mestu u prikazu datuma.
Možete kombinovati nekoliko opcija za formatiranje u jedan niz. Da biste prikazali naziv dana (%A
), dan u mesecu (%d
) i naziv meseca (%B
), upotrebite sledeću komandu:
date +%A%d%B
Ovo je uspelo, ali izlaz nije baš čitljiv. Možemo dodati razmake između opcija, pod uslovom da ceo niz formata stavimo pod navodnike. Znak plus +
ostaje izvan navodnika.
date +"%A %d %B"
Takođe, možete dodati tekst u niz formata, na sledeći način:
date +"Danas je: %A %d %B"
Pretraživanje man stranice za komandu date
u potrazi za odgovarajućom opcijom može postati zamorno. Radi lakše preglednosti, opcije smo podelili u grupe.
Opcije za prikaz datuma i vremena
%c
: Prikazuje datum i vreme u formatu koji odgovara vašem lokalitetu, uključujući vremensku zonu.
Opcije za prikaz datuma
%D
: Prikazuje datum u formatu mm/dd/yy.%F
: Prikazuje datum u formatu gggg-mm-dd.%x
: Prikazuje datum u formatu vašeg lokaliteta.
Opcije za prikaz dana
%a
: Prikazuje skraćeni naziv dana, npr. pon, uto, sre itd.%A
: Prikazuje pun naziv dana, npr. ponedeljak, utorak, sreda itd.%u
: Prikazuje broj dana u nedelji, gde je ponedeljak=1, utorak=2, sreda=3, itd.%w
: Prikazuje broj dana u nedelji, gde je nedelja=0, ponedeljak=1, utorak=2, itd.%d
: Prikazuje dan u mesecu, sa vodećom nulom (01, 02 … 09) ako je potrebno.%e
: Prikazuje dan u mesecu, sa vodećim razmakom ( ‘ 1’, ‘ 2’ … ‘ 9’) ako je potrebno. Obratite pažnju da se apostrofi ne prikazuju.%j
: Prikazuje dan u godini, sa najviše dve vodeće nule, ako je potrebno.
Opcije za prikaz nedelje
%U
: Prikazuje broj nedelje u godini, gde je nedelja prvi dan u nedelji. Na primer, treća nedelja u godini, dvadeseta nedelja u godini, itd.%V
: Prikazuje ISO broj nedelje u godini, gde je ponedeljak prvi dan u nedelji.%W
: Broj nedelje u godini, gde je ponedeljak prvi dan u nedelji.
Opcije za prikaz meseca
%b
ili %h
: Prikazuje skraćeni naziv meseca, npr. Jan, Feb, Mar itd.%B
: Prikazuje pun naziv meseca, npr. januar, februar, mart itd.%m
: Prikazuje broj meseca, sa vodećom nulom ako je potrebno 01, 02, 03 … 12.
Opcije za prikaz godine
%C
: Prikazuje vek bez godine. U 2019. prikazaće 20.%y
: Prikazuje godinu kao dve cifre. U 2019. prikazaće 19.%Y
: Prikazuje godinu kao četiri cifre.
Opcije za prikaz vremena
%T
: Prikazuje vreme kao HH:MM:SS.%R
: Prikazuje sate i minute kao HH:MM bez sekundi, koristeći 24-časovni format.%r
: Prikazuje vreme prema vašem lokalitetu, koristeći 12-časovni format i indikator pre podne ili posle podne.%X
: Prikazuje vreme prema vašem lokalitetu, koristeći 24-časovni format. Imajte na umu da se tokom testiranja ova opcija ponašala identično kao %r
. Na Linux mašini konfigurisanoj za UK i postavljenoj na GMT, prikazala je vreme, koristeći 24-časovni format bez AM ili PM indikatora, kao što se očekivalo.
Opcije za prikaz sata
%H
: Prikazuje sat u 24-časovnom formatu 00, 01, 02…23.%I
: Prikazuje sat u 12-časovnom formatu, 00, 01, 02 … 12, sa vodećom nulom ako je potrebno.
Opcije za prikaz minuta
%M
: Prikazuje minute, 01, 02, 03 … 59, sa vodećom nulom ako je potrebno.
Opcije za prikaz sekundi
%s
: Prikazuje broj sekundi od 1970-01-01 00:00:00, početka Unix Epoch.%S
: Prikazuje sekunde, 01, 02, 03 … 59, sa vodećom nulom ako je potrebno.%N
: Prikazuje nanosekunde.
Opcije za prikaz informacija o vremenskoj zoni
%z
: Prikazuje vremensku razliku između vaše vremenske zone i UTC.%:z
: Prikazuje vremensku razliku između vaše vremenske zone i UTC, sa : između sati i minuta. Obratite pažnju na : između znaka %
i z
.%::z
: Prikazuje vremensku razliku između vaše vremenske zone i UTC, sa : između sati, minuta i sekundi. Obratite pažnju na ::
između znaka %
i z
.%Z
: Prikazuje abecedni naziv vremenske zone.
Opcije vezane za formatiranje
%p
: Prikazuje indikator AM ili PM velikim slovima.%P
: Prikazuje indikator am ili pm malim slovima. Obratite pažnju na neobičnost sa ove dve opcije. Malo slovo p
daje izlaz velikim slovima, veliko P
daje izlaz malim slovima.%t
: Prikazuje tabulator.%n
: Prikazuje novi red.
Opcije za izmenu drugih opcija
Ovi modifikatori se mogu umetnuti između znaka %
i slova opcije drugih opcija da bi se promenio njihov prikaz. Na primer, %-S
bi uklonio vodeću nulu za jednocifrene vrednosti u sekundama.
-
: Jedna crtica sprečava dopunu nule na jednocifrenim vrednostima._
: Jedna donja crta dodaje vodeći razmak za jednocifrene vrednosti.0
: Obezbeđuje vodeće nule za jednocifrene vrednosti.^
: Koristi velika slova, ako je moguće (ne poštuju sve opcije ovaj modifikator).#
: Koristi suprotno od podrazumevanog velikog slova za opciju, ako je moguće (ne poštuju sve opcije ovaj modifikator).
Još dva zgodna trika
Da biste dobili vreme poslednje izmene datoteke, koristite opciju -r
(referenca). Imajte na umu da se ovde koristi crtica -
umesto znaka %
i ne zahteva znak +
. Isprobajte ovu komandu u svom kućnom folderu:
date -r .bashrc
Postavka TZ
vam omogućava da promenite vremensku zonu tokom trajanja jedne komande.
TZ=GMT date +%c
Korišćenje datuma u skriptama
Omogućavanje Bash shell skripte za prikaz vremena i datuma je jednostavno. Kreirajte tekstualnu datoteku sa sledećim sadržajem i sačuvajte je kao 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
Unesite sledeću komandu da biste podesili dozvole za izvršavanje i učinili skriptu izvršnom:
chmod +x gd.sh
Pokrenite skriptu ovom komandom:
./gd.sh
Možemo iskoristiti komandu date
da obezbedimo vremensku oznaku. Prikazana skripta će kreirati direktorijum čije će ime predstavljati vremensku oznaku. Zatim će u njega iskopirati sve tekstualne datoteke iz trenutnog direktorijuma. Povremenim pokretanjem ove skripte možemo napraviti snimak naših tekstualnih datoteka. Vremenom ćemo dobiti niz direktorijuma koji sadrže različite verzije naših tekstualnih datoteka.
Imajte na umu da ovo nije robustan sistem za pravljenje rezervnih kopija, već samo ilustrativan primer.
Kreirajte tekstualnu datoteku sa sledećim sadržajem i sačuvajte je kao 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
Unesite sledeću komandu da biste podesili dozvole za izvršavanje i učinili skriptu izvršnom:
chmod +x snapshot.sh
Pokrenite skriptu ovom komandom:
./snapshot.sh
Videćete da je direktorijum kreiran. Njegovo ime je datum i vreme kada je skripta izvršena. Unutar tog direktorijuma se nalaze kopije tekstualnih datoteka.
Uz malo razmišljanja i kreativnosti, čak i skromna date
komanda može se produktivno koristiti.