De datum en tijd weergeven in de Linux-terminal (en deze gebruiken in Bash-scripts)

Bash shell op Unity desktop-concept
Fatmawati Achmad Zaenuri / Shutterstock.com

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

Uitvoer van het datumcommando

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

Uitvoer van het datacommando met de optie 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

Uitvoer van het datacommando met A d B-opties

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"

Uitvoer van het datacommando met optie A d B met spaties

U kunt als volgt tekst aan de opmaakreeks toevoegen:

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

Uitvoer van het gegevenscommando met door de gebruiker toegevoegde tekst

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.

Uitvoer van het datumcommando

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.

Uitvoer van het datacommando met DF x-opties

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.

Uitvoer van het date-commando met een A uwdej-optie

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.

Uitvoer van het datumcommando met UVW-opties

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.

Uitvoer van het datacommando met bh B m-opties

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.

Uitvoer van het datacommando met C y Y-opties

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 %r doet, 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.

Uitvoer van het datacommando met TR r X-opties

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.

Uitvoer van het datacommando met HI-opties

Opties om minuten weer te geven

  • % M: drukt de minuut, 01, 02, 03… 59 af, indien nodig met een voorloopnul.

Uitvoer van het datacommando met M-opties

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.

Uitvoer van het datacommando met s SN-opties

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 en z .
  • % :: z: Drukt het tijdsverschil af tussen uw tijdzone en UTC, met een: tussen de uren, minuten en seconden. Merk op :: tussen de % teken en z .
  • % Z: Drukt de alfabetische naam van de tijdzone af.

Uitvoer van het datacommando met tijdzone-opties

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 p geeft uitvoer in hoofdletters, een hoofdletter P geeft kleine letters.
  • % t: Drukt een tabblad af.
  • % n: Drukt een nieuwe regel af.

Uitvoer van het datacommando met AM PM-indicator en opmaakopties

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).

Uitvoer van het datacommando met opmaakopties

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

Uitvoer van het date-commando met de optie voor het wijzigen van het bestand

Met de TZ-instelling kunt u uw tijdzone wijzigen voor de duur van een enkele opdracht.

TZ=GMT date +%c

Uitvoer van het datacommando voor een andere tijdzone

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

Uitvoer van het gd.sh-script

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

Effect van het uitvoeren van het snapshot.sh-script

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.

Nieuwste artikelen

Gerelateerde artikelen