Datorkommandot, en integrerad del av Bash-skalet, vilket är standard i många Linux-distributioner och även i macOS, erbjuder mer än bara tidsvisning. Denna guide utforskar hur du använder datumkommandot effektivt i kommandoraden och i skalskript.
Genom att skriva date
i terminalen får du fram aktuell tid och datum i din tidszon:
date
Standardutskriften kan upplevas som lite konstig med året längst bak. Som tur är ger date
dig fullständig kontroll över utdataformatet. Över 40 alternativ kan anpassa informationen exakt efter dina behov.
För att använda alternativen, skriv date +
följt av önskat alternativ med ett inledande procenttecken (%). Alternativet %c
, som ger datum och tid i språkformat, visar informationen i ett format som är anpassat efter dina regionala inställningar. Dessa inställningar är baserade på den information du angav vid installationen av operativsystemet och styr bland annat valutasymboler, pappersstorlekar och tidszoner.
date +%c
Året hamnar nu i en mer naturlig position.
Du kan kombinera flera alternativ i en formatsträng. För att exempelvis få fram veckodagens namn (%A
), datum (%d
) och månadens namn (%B
) kan du använda:
date +%A%d%B
Resultatet är inte optimalt. Vi kan lägga till mellanrum genom att omsluta hela formatsträngen med citattecken. Observera att +
står utanför citattecknen:
date +"%A %d %B"
Det går också bra att inkludera egen text i formatsträngen:
date +"Today is: %A %d %B"
Att gräva igenom datumets manualsida efter rätt alternativ kan vara tidskrävande. Därför har vi delat in alternativen i grupper för enklare navigering.
Alternativ för att visa datum och tid
%c
: Visar datum och tid i ditt regionala format, inklusive tidszon.
Alternativ för att visa datum
%D
: Visar datum i formatet mm/dd/åå.%F
: Visar datum i formatet åååå-mm-dd.%x
: Visar datum i ditt regionala format.
Alternativ för att visa dagen
%a
: Visar dagens namn, förkortat (mån, tis, ons osv.).%A
: Visar dagens fullständiga namn (måndag, tisdag, onsdag osv.).%u
: Visar veckodagens nummer (måndag=1, tisdag=2, osv.).%w
: Visar veckodagens nummer (söndag=0, måndag=1, osv.).%d
: Visar månadsdagen med en inledande nolla (01, 02, …, 09).%e
: Visar månadsdagen med ett inledande mellanslag (’ 1’, ’ 2’, …, ’ 9’).%j
: Visar dagen på året (med inledande nollor om nödvändigt).
Alternativ för att visa veckan
%U
: Visar årets veckonummer, med söndag som första dagen.%V
: Visar årets ISO-veckonummer, med måndag som första dagen.%W
: Visar årets veckonummer, med måndag som första dagen.
Alternativ för att visa månaden
%b
eller %h
: Visar månadens namn, förkortat (Jan, Feb, Mar osv.).%B
: Visar månadens fullständiga namn (januari, februari, mars osv.).%m
: Visar månadens nummer (med en inledande nolla vid behov: 01, 02, 03, …, 12).
Alternativ för att visa året
%C
: Visar århundradet utan årtal (20 för 2019).%y
: Visar året med två siffror (19 för 2019).%Y
: Visar året med fyra siffror.
Alternativ för att visa tiden
%T
: Visar tiden som TT:MM:SS.%R
: Visar timmar och minuter som TT:MM (utan sekunder).%r
: Visar tiden enligt din plats, med 12-timmarsklockan och AM/PM.%X
: Visar tiden enligt din plats med 24-timmarsklockan (kan i vissa fall fungera som %r).
Alternativ för att visa timmen
%H
: Visar timmen (00, 01, 02, …, 23).%I
: Visar timmen med 12-timmarsklockan (00, 01, 02, …, 12, med inledande nolla).
Alternativ för att visa minuter
%M
: Visar minuten (01, 02, 03, …, 59, med inledande nolla).
Alternativ för att visa sekunder
%s
: Visar antalet sekunder sedan 1970-01-01 00:00:00 (Unix-epoken).%S
: Visar sekunderna (01, 02, 03, …, 59, med inledande nolla).%N
: Visar nanosekunderna.
Alternativ för att visa tidszoninformation
%z
: Visar tidsskillnaden mellan din tidszon och UTC.%:z
: Visar tidsskillnaden mellan din tidszon och UTC med ”:” mellan timmar och minuter.%::z
: Visar tidsskillnaden mellan din tidszon och UTC med ”:” mellan timmar, minuter och sekunder.%Z
: Visar det alfabetiska tidszonsnamnet.
Alternativ relaterade till formatering
%p
: Visar AM- eller PM-indikatorn i versaler.%P
: Visar am- eller pm-indikatorn i gemener.%t
: Visar en tabulator.%n
: Visar en ny rad.
Alternativ för att ändra andra alternativ
Dessa modifierare kan placeras mellan %
och alternativbokstaven för att ändra deras utseende. Till exempel skulle %-S
ta bort den inledande nollan för ensiffriga sekundvärden.
-
: Ett enkelt bindestreck förhindrar nollutfyllnad på ensiffriga värden._
: Ett enkelt understreck lägger till inledande mellanslag för ensiffriga värden.0
: Ger inledande nollor för ensiffriga värden.^
: Använder versaler om möjligt (alla alternativ stöder inte denna modifierare).#
: Använder om möjligt motsatt format mot standard för alternativet (alla alternativ stöder inte denna modifierare).
Ytterligare två användbara tips
För att få fram den senaste ändringstiden för en fil, använd alternativet -r
(referens). Observera att detta använder ett minustecken (-
) istället för ett procenttecken (%
) och inget +
-tecken. Testa det här kommandot i din hemkatalog:
date -r .bashrc
Med TZ
-inställningen kan du ändra din tidszon för ett enskilt kommando:
TZ=GMT date +%c
Använda datum i skript
Att använda datumkommandot i ett Bash-skalskript är enkelt. Skapa en textfil med följande innehåll och spara 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
Gör skriptet körbart genom att skriva följande kommando:
chmod +x gd.sh
Kör skriptet med följande kommando:
./gd.sh
Vi kan använda datumkommandot för att lägga till tidsstämplar. Skriptet som visas nedan skapar en mapp med tidsstämpeln som namn, och kopierar sedan alla textfiler i den aktuella mappen till den nya mappen. Om du kör detta skript regelbundet kan du skapa en serie mappar med versioner av dina textfiler. Observera att detta inte är ett fullfjädrat säkerhetskopieringssystem utan bara ett exempel.
Skapa en ny textfil och spara den som snapshot.sh
med följande innehåll:
#!/bin/bash # Hämta datum och tid date_stamp=$(date +"%F-%H-%M-%S") # Skapa en mapp med det namnet mkdir "$date_stamp" # Kopiera filerna från den aktuella mappen till den nya mappen cp *.txt "$date_stamp" # Klart, rapportera och avsluta echo "Textfiler kopierade till mappen: "$date_stamp
Gör skriptet körbart med kommandot:
chmod +x snapshot.sh
Kör skriptet med kommandot:
./snapshot.sh
Nu ska en ny katalog ha skapats med datum och tid som namn. Inuti den katalogen finns kopior av dina textfiler.
Med lite eftertanke och kreativitet kan även det enkla datumkommandot användas på många sätt.