Home / LinuxUser / 2003 / 06 / Zu Befehl: date & cal

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Zeitgemäße Werkzeuge

Zu Befehl: date & cal

Up to date!

Der Superuser root darf mit date die Systemzeit stellen. Das Kommando erwartet dabei die Angabe der Zeit in der Form MMDDhhmmCCYY.ss ohne vorangestelltes Pluszeichen +, z. B.:

asteroid:~# date 04111723
Fre Apr 11 17:23:00 CEST 2003

Gesetzt werden dürfen:

  • MM: Monat, z. B. 04
  • DD: Tag, z. B. 13
  • hh: Stunde, z. B. 12
  • mm: Minute, z. B. 59
  • CC: die ersten beiden Stellen der Jahreszahl (optional), z. B. 19
  • YY: die letzten beiden Stellen der Jahreszahl (optional), z. B. 73
  • ss: die Sekunden (optional), z. B. 24

Mit der Zusatzoption -s darf beim Setzen der Zeit auch eine etwas freiere Notation verwendet werden, z. B. date -s 04/29/2003:

asteroid:~# date -s 04/29/2003
Die Apr 29 00:00:00 CEST 2003
asteroid:~# date -s "04/29/2003 15:58"
Die Apr 29 15:58:00 CEST 2003

Beachten Sie, dass eine Änderung der Systemzeit nicht die CMOS-Uhr beeinflusst. Um diese an die aktuelle Systemzeit anzupassen, verwenden Sie (ebenfalls als Superuser root) den Befehl hwclock -w (oder in der Langform hwclock --systohc, diese Option steht für "system to hardware clock").

Happy Birthday to you!

Seine große Stärke zeigt das Kommando date in Shell-Skripten. Im Geburtstagskalender (siehe Listing 1) zeigen wir, wie Sie cal und date schön kombinieren können. Ausgangspunkt ist eine versteckte Datei im eigenen Home-Verzeichnis (~/.birthdays). Pro Zeile gibt es dort ein Datum und einen Namen:

huhn@asteroid:~$ cat .birthdays
28.02.  Petronella
28.04.  Jones
27.04.  Easter
…

Im Skript birthday.sh wird zunächst die Variable heute_cal mit der Ausgabe von date +%e belegt (vergleiche Tabelle 1). Das folgende echo -e erlaubt die Verwendung von Escape-Sequenzen. Dazu gehören auch \n für einen Zeilenumbruch und \t für einen Tabulator. Das Kommando cal gibt den Kalender aus, wobei die Ausgabe in diesem Fall durch das Pipe-Zeichen "|" an den sed-Aufruf weitergeleitet wird. sed sucht jetzt in diesem Kalenderblatt den Abschnitt, der den Tag (die Ausgabe von date +%e) enthält und an einem Wortende (>, das ist der Regex-Ausdruck dafür) liegt. Er wird ersetzt durch ESC[31;7m (eine ANSI-Escape-Sequenz, die das Terminal auf rot und inverse Darstellung umschaltet), den Abschnitt selbst (&, das ist die sed-Referenz auf den ersetzten String) und ESC[39;0m (eine zweite Sequenz, die die Terminaldarstellung wieder zurücksetzt). Die zahllosen Backslashes sind nötig, um die Ausdrücke für die Shell und für sed passend zu maskieren.

Anschließend wird die Ausgabe von date +%d.%m der Variablen heute zugewiesen. Zunächst gibt das Skript das heutige Datum aus, dann schaltet es das Terminal auf rot um (ANSI-Sequenz). In der Datei ~/.birthdays sucht grep nach Zeilen, die mit dem Tagesdatum beginnen ("^$heute"). Zum Schluss wird das Terminal wieder auf normale Schriftfarbe zurückgestellt.

Die letzte Zeile des Skripts lässt sich in etwa so aufschlüsseln: Das Programm egrep (eine Variante von grep, die reguläre Ausdrücke beherrscht) sucht in ~/.birthdays nach Zeilen, die mit einer beliebigen Anzahl Ziffern (0 bis 9) beginnen, danach einen Punkt, den aktuellen Monat und wieder einen Punkt enthalten. Dabei bedeutet das "^"-Zeichen "am Zeilenanfang" und "[0-9]*" steht für beliebig viele Zeichen aus dem Bereich von 0 bis 9.

Ein Eintrag der Form

. ~/birthday.sh

in die Datei .profile sorgt dafür, dass das Skript bei jedem Login ausgeführt wird – so behalten Sie die wichtigen Daten immer im Auge.

Listing 1

Das Geburtstags-Skript

#!/bin/sh
heute_cal=`date +%e`
echo -e "`cal | sed s/"${heute_cal}\>"/\\\\\\\\e[31\;7m\&\\\\\\\\e[39\;0m/g`"
echo
heute=`date +%d.%m`
echo Heute ist der $heute, Geburtstag\(e\):
echo -e "\033[31m"; grep "^$heute" ~/.birthdays; echo -e "\033[0m"
morgen=`date -d tomorrow +%d.%m`
echo Morgen ist der $morgen, Geburtstag\(e\):
grep "^$morgen" ~/.birthdays
echo
dieser_Monat=`date +%m`
echo Im `date +%B` haben folgende Leute Geburtstag:
egrep "^[0-9]*\.$dieser_Monat\." ~/.birthdays

Glossar

Locales

Linux unterstützt verschiedene Ausgabesprachen für Programm- und Systemmeldungen, Datums- oder Währungsangaben. Die Namen aller auf Ihrem System installierten Lokalisierungen (engl.: locales) nennt Ihnen das "locale"-Kommando: "locale -a".

CMOS

Complimentary Metal-Oxide Semiconductor. Der Timer-Chip, der die Systemzeit misst, läuft nicht weiter, wenn der Rechner ausgeschaltet ist. Alle PCs haben daher eine Batterie-betriebene Uhr, die das Datum und die Uhrzeit auch dann weiterzählt, wenn der Rechner ohne Stromversorgung ist. Da diese Uhr im gleichen Baustein wie das CMOS-RAM untergebracht ist, nennt man sie auch CMOS-Uhr. Andere gängige Bezeichnungen sind: Hardware-Uhr, RTC (Real Time Clock) oder BIOS-Uhr.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...