Slik viser du dato og klokkeslett i Linux-terminalen (og bruker den i Bash-skript)

Datokommandoen finnes i Bash-skallet, som er standardskallet i de fleste Linux-distribusjoner og til og med macOS. Denne opplæringen viser deg hvordan du mestrer dato på kommandolinjen og hvordan du kan bruke den i shell-skript for å gjøre mer enn bare å skrive ut tiden.

Kjør datokommandoen for å se denne informasjonen. Den skriver ut gjeldende dato og klokkeslett for tidssonen din:

date

Standardformateringen ser litt klønete ut. Hvorfor skrives ikke året ut etter måneden og dagen, i stedet for å være merket på slutten, bak tidssonen? Frykt ikke: Hvis det er kontroll over formatet på utdataene du vil ha, leverer date det i spar. Det er mer enn 40 alternativer du kan sende til dags dato for å instruere den til å formatere utdataene nøyaktig slik du ønsker.

For å bruke noen av alternativene, skriv inn dato, et mellomrom, et plusstegn + og alternativet inkludert det fremste prosenttegnet. Alternativet %c (data og klokkeslett i lokalformat) fører til at datoen og klokkeslettet skrives ut i det normaliserte formatet som er knyttet til lokaliteten din. Lokaliteten din bestemmes av den geografiske og kulturelle informasjonen du oppga da du installerte operativsystemet. Lokaliteten styrer ting som valutasymbolet, papirstørrelser, tidssone og andre kulturelle normer.

date +%c

Året fremstår nå i en mer naturlig posisjon i produksjonen.

Du kan sende flere alternativer til date samtidig. En sekvens av alternativer kalles en formatstreng. For å se navnet på dagen (%A), dagen i måneden (%d) og månedsnavnet (%B), bruk denne kommandoen:

date +%A%d%B

Det fungerte, men det er stygt. Ikke noe problem, vi kan inkludere mellomrom så lenge vi pakker hele formatstrengen i anførselstegn. Merk at + går utenfor anførselstegnene.

date +"%A %d %B"

Du kan legge til tekst i formatstrengen, slik:

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

Bla opp og ned gjennom datoen mannside det blir snart slitsomt å lete etter alternativet du vil ha. Vi har delt inn alternativene i grupper for å hjelpe deg å finne veien rundt dem lettere.

Alternativer for å vise dato og klokkeslett

%c: Skriver ut dato og klokkeslett i formatet for lokaliteten din, inkludert tidssonen.

  Hvordan drepe prosesser fra Linux-terminalen

Alternativer for å vise datoen

%D: Skriver ut datoen i formatet mm/dd/åå.
%F: Skriver ut datoen i formatet åååå-mm-dd.
%x: Skriver ut datoen i formatet for ditt lokale.

Alternativer for å vise dagen

%a: Skriver ut navnet på dagen, forkortet til Man, Tir, Ons, osv.
%A: Skriver ut hele navnet på dagen, mandag tirsdag, onsdag osv.
%u: Skriver ut nummeret på ukedagen, der mandag=1, tirsdag=2, onsdag=3 osv.
%w: Skriver ut nummeret på ukedagen, der søndag=0, mandag=1, tirsdag=2 osv.
%d: Skriver ut dagen i måneden, med en innledende null (01, 02 … 09) om nødvendig.
%e: Skriver ut dagen i måneden, med et mellomrom foran («1», «2» … «9») om nødvendig. Merk at apostrofene ikke skrives ut.
%j: Skriver ut dagen i året, med opptil to innledende nuller, om nødvendig.

Alternativer for å vise uken

%U: Skriver ut ukenummer for året, med tanke på søndag som den første dagen i uken. For eksempel den tredje uken i året, den tjuende uken i året osv.
%V: Skriver ut ISO-ukenummeret for året, med tanke på mandag som den første dagen i uken.
%W: Årets ukenummer, med tanke på mandag som den første dagen i uken.

Alternativer for å vise måneden

%b eller %h: Skriver ut navnet på måneden forkortet til Jan, Feb, Mar, etc.
%B: skriver ut månedens fulle navn, januar, februar, mars osv.
%m: Skriver ut månedens nummer, med en innledende null om nødvendig 01, 02, 03 … 12.

Alternativer for å vise året

%C: Skriver ut århundret uten årstall. I 2019 skulle det trykkes 20.
%y: Skriver ut året som to sifre. i 2019 vil den skrives ut 19.
%Y: Skriver ut året som fire sifre.

  Hvordan spille Stellaris på Linux

Alternativer for å vise tiden

%T: Skriver ut tiden som TT:MM:SS.
%R: Skriver ut timen og minuttene som TT:MM uten sekunder, med 24-timers klokken.
%r: Skriver ut klokkeslettet i henhold til ditt lokale, ved hjelp av 12-timers klokken og en am- eller pm-indikator.
%X: Skriver ut klokkeslettet i henhold til ditt sted, ved hjelp av 24-timers klokken. Angivelig. Merk at under testing oppførte dette alternativet seg nøyaktig som %r gjør, som vist nedenfor. På en Linux-maskin konfigurert for Storbritannia og satt til GMT, skrev den ut tiden ved å bruke 24-timers klokken uten AM- eller PM-indikator, som forventet.

Alternativer for å vise timen

%H: Skriver ut timen 00, 01, 02…23.
%I: Skriver ut timen ved å bruke 12-timers klokken, 00, 01, 02 … 12, med innledende null om nødvendig.

Alternativer for å vise minutter

%M: skriver ut minuttet, 01, 02, 03 … 59, med innledende null om nødvendig.

Alternativer for å vise sekunder

%s: Skriver ut antall sekunder siden 1970-01-01 00:00:00, starten av Unix-epoken.
%S: Skriver ut sekundene, 01, 02, 03 … 59, med innledende null om nødvendig.
%N: Skriver ut nanosekunder.

Alternativer for å vise tidssoneinformasjon

%z: Skriver ut tidsforskjellen mellom din tidssone og UTC.
%:z: Skriver ut tidsforskjellen mellom din tidssone og UTC, med en : mellom timer og minutter. Legg merke til: mellom %-tegnet og z.
%::z: Skriver ut tidsforskjellen mellom din tidssone og UTC, med en : mellom timer, minutter og sekunder. Legg merke til :: mellom %-tegnet og z .
%Z: Skriver ut det alfabetiske tidssonenavnet.

Alternativer relatert til formatering

%p: Skriver ut AM- eller PM-indikatoren med store bokstaver.
%P: Skriver ut am- eller pm-indikatoren med små bokstaver. Legg merke til særheten med disse to alternativene. En liten p gir utgang med store bokstaver, en stor P gir utgang for små bokstaver.
%t: Skriver ut en fane.
%n: Skriver ut en ny linje.

  Hvordan laste opp bilder til Flickr fra Linux-skrivebordet

Alternativer for å endre andre alternativer

Disse modifikatorene kan settes inn mellom % og alternativbokstaven for andre alternativer for å endre visningen. For eksempel vil %-S fjerne innledende null for enkeltsifrede sekundverdier.

–: En enkelt bindestrek forhindrer nullutfylling på enkeltsifrede verdier.
_: et enkelt understrek legger til innledende mellomrom for enkeltsifrede verdier.
0: Gir innledende nuller for enkeltsifrede verdier.
^: Bruker store bokstaver, hvis mulig (ikke alle alternativer respekterer denne modifikatoren).
#: Bruk det motsatte av standard store og små bokstaver for alternativet, hvis mulig (ikke alle alternativer respekterer denne modifikatoren).

To ryddige triks til

For å få siste endringstid for en fil, bruk alternativet -r (referanse). Merk at dette bruker en – (bindestrek) i stedet for et %-tegn, og det krever ikke et +-tegn. Prøv denne kommandoen i hjemmemappen din:

date -r .bashrc

TZ-innstillingen lar deg endre tidssonen din for varigheten av en enkelt kommando.

TZ=GMT date +%c

Bruke dato i skript

Å aktivere et Bash-shell-skript for å skrive ut klokkeslett og dato er trivielt. Lag en tekstfil med følgende innhold, og lagre den som 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

Skriv inn følgende kommando for å angi kjøringstillatelsene og gjøre skriptet kjørbart.

chmod +x gd.sh

Kjør skriptet med denne kommandoen:

./gd.sh

Vi kan bruke datokommandoen for å gi et tidsstempel. Skriptet som vises vil opprette en katalog med tidsstemplet som navn. Den vil da kopiere alle tekstfiler fra gjeldende mappe inn i den. Ved å kjøre dette skriptet med jevne mellomrom kan vi ta et øyeblikksbilde av tekstfilene våre. Over tid vil vi bygge opp en serie mapper med forskjellige versjoner av tekstfilene våre.

Merk at dette ikke er et robust sikkerhetskopieringssystem, det er kun for illustrative formål.

Lag en tekstfil med følgende innhold, og lagre den som 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

Skriv inn følgende kommando for å angi kjøringstillatelsene og gjøre skriptet kjørbart.

chmod +x snapshot.sh

Kjør skriptet med denne kommandoen:

./snapshot.sh

Du vil se at en katalog er opprettet. Navnet er datoen og klokkeslettet da skriptet ble utført. Inne i den katalogen er kopier av tekstfilene.

Gitt litt omtanke og kreativitet, kan selv den ydmyke datokommandoen brukes produktivt.