
De date commando is te vinden in de Bash-shell, de standaardshell in de meeste Linux-distributies en zelfs macOS. Deze tutorial laat zien hoe je het onder de knie kunt krijgen date op de opdrachtregel en hoe u het in shellscripts kunt gebruiken om meer te doen dan alleen de tijd afdrukken.
Voer de … uit date commando om deze informatie te zien. Het drukt de huidige datum en tijd voor uw tijdzone af:
date

De standaardopmaak ziet er een beetje maf uit. Waarom wordt het jaar niet afgedrukt na de maand en de dag, in plaats van aan het einde achter de tijdzone te worden getagd? Wees niet bang: als het controle is over het formaat van de gewenste uitvoer, date levert het in schoppen. Er zijn meer dan 40 opties die u kunt doorgeven date om het te instrueren om zijn uitvoer precies zo te formatteren als je wilt.
Om een ​​van de opties te gebruiken, typt u date, een spatie, een plusteken +, en de optie inclusief het leidende procentteken. De %c (data en tijd in locale formaat) optie zorgt ervoor dat de datum en tijd worden afgedrukt in het genormaliseerde formaat dat is gekoppeld aan uw locale. Uw landinstelling wordt bepaald door de geografische en culturele informatie die u heeft verstrekt toen u uw besturingssysteem installeerde. De landinstelling regelt zaken als het valutasymbool, papierformaten, tijdzone en andere culturele normen.
date +%c

Het jaar verschijnt nu op een meer natuurlijke positie in de output.
U kunt verschillende opties doorgeven aan date onmiddelijk. Een reeks opties wordt een opmaakreeks genoemd. Om de naam van de dag te zien (%A), de dag van de maand (%d) en de naam van de maand (%B), gebruik dan deze opdracht:
date +%A%d%B

Dat werkte, maar het is lelijk. Geen probleem, we kunnen spaties opnemen, zolang we de hele opmaakreeks tussen aanhalingstekens plaatsen. Merk op dat de + gaat buiten de aanhalingstekens.
date +"%A %d %B"

U kunt als volgt tekst aan de opmaakreeks toevoegen:
date +"Today is: %A %d %B"

Omhoog en omlaag scrollen door het date man-pagina op zoek naar de gewenste optie wordt al snel vervelend. We hebben de opties in groepen onderverdeeld, zodat u er gemakkelijker uw weg kunt vinden.
Opties om de datum en tijd weer te geven
- % c: Drukt de datum en tijd af in de indeling voor uw landinstelling, inclusief de tijdzone.

Opties om de datum weer te geven
- % D: Drukt de datum af in het formaat mm / dd / jj.
- % F: Drukt de datum af in de indeling jjjj-mm-dd.
- %X: Drukt de datum af in de indeling voor uw landinstelling.

Opties om de dag weer te geven
- %een: Drukt de naam van de dag af, afgekort tot ma, di, wo, enz.
- %EEN: Drukt de volledige naam van de dag af, maandag dinsdag, woensdag, enz.
- % u: Drukt het nummer van de dag van de week af, waarbij maandag = 1, dinsdag = 2, woensdag = 3, enz.
- % w: Drukt het nummer van de dag van de week af, waarbij zondag = 0, maandag = 1, dinsdag = 2, enz.
- % d: Drukt de dag van de maand af, indien nodig met een voorloopnul (01, 02… 09).
- % e: Drukt de dag van de maand af, indien nodig met een spatie (‘1’, ‘2’… ‘9’). Merk op dat de apostrofs niet worden afgedrukt.
- % j: Drukt de dag van het jaar af, indien nodig met maximaal twee voorloopnullen.

Opties om de week weer te geven
- % U: Drukt het weeknummer van het jaar af, waarbij zondag als eerste dag van de week wordt beschouwd. Bijvoorbeeld de derde week van het jaar, twintigste week van het jaar, etc.
- % V: Drukt het ISO-weeknummer van het jaar af, waarbij maandag als eerste dag van de week wordt beschouwd.
- % W: Weeknummer van het jaar, waarbij maandag als eerste dag van de week wordt beschouwd.

Opties om de maand weer te geven
- % b of % h: Drukt de naam van de maand af, afgekort tot jan, feb, mrt, enz.
- % B: drukt de volledige naam van de maand af, januari, februari, maart, enz.
- % m: Drukt het nummer van de maand af, eventueel met een voorloopnul 01, 02, 03… 12.

Opties om het jaar weer te geven
- % C: Drukt de eeuw af zonder het jaar. In 2019 zou het er 20 drukken.
- % y: Drukt het jaar af als twee cijfers. in 2019 worden er 19 gedrukt.
- % Y: Drukt het jaar af in vier cijfers.

Opties om de tijd weer te geven
- % T: Drukt de tijd af als UU: MM: SS.
- % R: Drukt de uren en minuten af ​​als UU: MM zonder seconden, met gebruikmaking van de 24-uursklok.
- % r: Drukt de tijd af op basis van uw landinstelling, met gebruikmaking van de 12-uursklok en een am- of pm-indicator.
-
%X: Drukt de tijd af op basis van uw landinstelling, met gebruikmaking van de 24-uursklok. Naar verluidt. Merk op dat deze optie zich tijdens het testen precies zo gedroeg
%rdoet, zoals hieronder getoond. Op een Linux-machine die was geconfigureerd voor de landinstelling in het VK en ingesteld op GMT, werd de tijd afgedrukt volgens de 24-uursklok zonder AM- of PM-indicator, zoals verwacht.

Opties om het uur weer te geven
- % H: Drukt het uur 00, 01, 02… 23 af.
- %IK: Drukt het uur af met gebruikmaking van de 12-uursklok, 00, 01, 02… 12, met indien nodig een voorloopnul.

Opties om minuten weer te geven
- % M: drukt de minuut, 01, 02, 03… 59 af, indien nodig met een voorloopnul.

Opties om seconden weer te geven
- % s: Drukt het aantal seconden af ​​sinds 1970-01-01 00:00:00, het begin van de Unix Epoch.
- % S: Drukt de seconden, 01, 02, 03… 59 af, indien nodig met een voorloopnul.
- % N: Drukt de nanoseconden af.

Opties om tijdzone-informatie weer te geven
- % z: Drukt het tijdsverschil af tussen uw tijdzone en UTC.
-
%: z: Drukt het tijdsverschil af tussen uw tijdzone en UTC, met een: tussen de uren en minuten. Merk op
:tussen de%teken enz. -
% :: z: Drukt het tijdsverschil af tussen uw tijdzone en UTC, met een: tussen de uren, minuten en seconden. Merk op
::tussen de%teken enz. - % Z: Drukt de alfabetische naam van de tijdzone af.

Opties met betrekking tot opmaak
- % p: Drukt de AM- of PM-indicator in hoofdletters af.
-
% P: Drukt de am- of pm-indicator in kleine letters af. Let op de eigenaardigheid met deze twee opties. Een kleine letter
pgeeft uitvoer in hoofdletters, een hoofdletterPgeeft kleine letters. - % t: Drukt een tabblad af.
- % n: Drukt een nieuwe regel af.

Opties om andere opties te wijzigen
Deze modificatoren kunnen tussen de % en de optiebrief van andere opties om hun weergave te wijzigen. Bijvoorbeeld, %-S zou de voorloopnul verwijderen voor secondenwaarden van één cijfer.
- –: Een enkel koppelteken voorkomt nul-opvulling bij waarden van één cijfer.
- _: een enkel onderstrepingsteken voegt voorloopspaties toe voor waarden van één cijfer.
- 0: Biedt voorloopnullen voor waarden van één cijfer.
- ^: Gebruikt indien mogelijk hoofdletters (niet alle opties respecteren deze wijziging).
- #: Gebruik indien mogelijk het tegenovergestelde van het standaardlettergebruik voor de optie (niet alle opties respecteren deze wijziging).

Nog twee leuke trucs
Om de laatste wijzigingstijd van een bestand te krijgen, gebruikt u de -r (referentie) optie. Merk op dat dit een - (koppelteken) in plaats van een % teken, en het vereist geen + teken. Probeer deze opdracht in uw thuismap:
date -r .bashrc

Met de TZ-instelling kunt u uw tijdzone wijzigen voor de duur van een enkele opdracht.
TZ=GMT date +%c

Datum gebruiken in scripts
Het inschakelen van een Bash-shellscript om de tijd en datum af te drukken is triviaal. Maak een tekstbestand met de volgende inhoud en sla het op als 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
Typ de volgende opdracht om de uitvoeringsmachtigingen in te stellen en het script uitvoerbaar te maken.
chmod +x gd.sh
Voer het script uit met deze opdracht:
./gd.sh

We kunnen de opdracht date gebruiken om een ​​tijdstempel op te geven. Het weergegeven script maakt een map met de tijdstempel als naam. Het zal dan alle tekstbestanden uit de huidige map erin kopiëren. Door dit script periodiek uit te voeren, kunnen we een momentopname maken van onze tekstbestanden. In de loop van de tijd zullen we een reeks mappen opbouwen met daarin verschillende versies van onze tekstbestanden.
Merk op dat dit geen robuust back-upsysteem is, het is alleen ter illustratie.
Maak een tekstbestand met de volgende inhoud en sla het op als 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
Typ de volgende opdracht om de uitvoeringsmachtigingen in te stellen en het script uitvoerbaar te maken.
chmod +x snapshot.sh
Voer het script uit met deze opdracht:
./snapshot.sh

U zult zien dat er een map is aangemaakt. De naam is de datum en tijd waarop het script is uitgevoerd. Binnen die map bevinden zich kopieën van de tekstbestanden.
Met een beetje nadenken en creativiteit, zelfs de bescheiden date commando kan productief worden gebruikt.