titel_cal_date.jpg

Zeitgemäße Werkzeuge

Zu Befehl: date & cal

01.06.2003
Die Kommandozeilen-Tools cal und date erzeugen Kalender und bearbeiten Datum und Uhrzeit. Wenn man sie geschickt einsetzt, kann man daraus zum Beispiel eine kleine Geburtstagsverwaltung machen.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Es muss nicht immer ein grafisches Tool oder eine Schnittstelle zum PDA sein, um den Überblick über die eigenen Termine zu behalten. Linux bringt mit cal und date eigene Kalender-Software für die Kommandozeile. Ungeschlagen sind diese Tools, wenn es um den Einsatz in Shell-Skripten geht. Nach einem Blick auf die verschiedenen Optionen von cal und date zeigen wir daher anhand eines einfachen Beispiels, wie Sie mit wenigen Handgriffen ein Skript zaubern, das Sie beim Einloggen an die Geburtstage Ihrer Lieben erinnert.

Welches Jahr?

Hier kommt ein Programm, mit dem Sie einen einfachen Kalender auf die Kommandozeile zaubern:

huhn@asteroid:~$ cal
     April 2003
 S  M Tu  W Th  F  S
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Ohne Parameter gestartet, wird nur der aktuelle Monat angezeigt. Die Option -y hingegen sorgt dafür, dass ein Kalender für das aktuelle Jahr ausgegeben wird. Wenn Sie den Output durch less pipen (cal -yless), scrollt der Kalender nicht aus dem Fenster heraus. Einen bestimmten Monat zeigt cal an, wenn Sie an den Aufruf den Monat und das Jahr (vierstellig) anhängen, also z. B. cal 06 2003 für den Juni 2003. Es reicht nicht, die Jahreszahl zweistellig anzugeben; der Aufruf cal 06 99 würde nicht den Juni 1999 anzeigen, sondern den Juni des Jahres 99 n. Chr. – cal geht zurück bis zum 1. Januar 0001.

Die Option -j sorgt dafür, dass cal die Tage ab Jahresbeginn angibt (Julianische Darstellung):

huhn@asteroid:~$ cal -j
        April 2003
  S   M  Tu   W  Th   F   S
         91  92  93  94  95
[…]

Julianischer / Gregorianischer Kalender

Der Julianische Kalender war eine grundlegende Reform des römischen Kalenders und wurde 46 v. Chr. von Julius Cäsar eingeführt. Dem Jahr wurde alle vier Jahre ein Schalttag hinzugefügt; der Jahresbeginn wurde auf den ersten Januar verlegt. Da dieser Kalender aber nicht exakt der astronomischen Zeit entsprach, veranlasste Papst Gregor XIII. im Jahr 1582 eine Kalenderreform (einmaliger Wegfall von zehn Kalendertagen zum Ausgleich, neue Schaltjahrregelung, nach der die Schalttage in den Jahren fortfallen, die durch 100, aber nicht durch 400 teilbar sind). Der Gregorianische Kalender wurde zunächst nur in katholischen Gegenden angenommen; nach und nach setzte sich die neue Zeitzählung aber durch.

Die richtige Zeit

Mit dem Befehl date erfahren Sie das aktuelle Datum und die Uhrzeit (für die eingestellte Zeitzone) und dürfen darüber hinaus als Superuser root die Systemzeit neu setzen. Ohne Parameter gibt date die aktuelle Systemzeit aus:

huhn@asteroid:~$ date
Wed Apr 23 12:55:37 CEST 2003

Wer die englischen Ausdrücke für Woche und Monat nicht mag, setzt die Umgebungsvariable LC_TIME auf einen gültigen Locales-Wert. Mit dem Kommando export LC_TIME=de_DE bringen Sie date z. B. dazu, Deutsch zu sprechen:

huhn@asteroid:~$ export LC_TIME=de_DE
huhn@asteroid:~$ date
Mit Apr 23 13:55:32 CEST 2003

Mit Hilfe von Umgebungsvariablen lässt sich date auch noch zu anderen Ausgaben überreden. Im Verzeichnis /usr/share/zoneinfo finden Sie eine Übersicht aller Zeitzonen, einige davon in Unterverzeichnissen. Durch temporäres Verändern der Variable TZ (für "TimeZone") finden Sie beispielsweise heraus, wie spät es auf der Osterinsel ist:

huhn@asteroid:~$ TZ=Chile/EasterIsland date
Mit Apr 23 11:34:26 EAST 2003

Sie können sich das Datum in verschiedenen Ausgabeformaten anzeigen lassen. Dazu verwenden Sie das Pluszeichen "+", gefolgt von einem Prozentzeichen "%" und Buchstabensequenzen. Die wichtigsten Ausgabeformate finden Sie in Tabelle 1.

Tabelle 1: Ausgabeformate für date

%% das Prozentzeichen selbst
%n Zeilenende
%t Tabulator
%a Wochentag (Kurzform), Output: Mon
%A Wochentag (Langform), Output: Montag
%b Monatsname (Kurzform), Output: Apr
%B Monatsname (Langform), Output: April
%d Tag (zweistellig), Output: 01
%e Tag (einstellig, mit Leerzeichen), Output: 1
%D das Datum in der Form mm/dd/yy, Output: 04/29/03
%H Stunden (0 bis 23)
%I Stunden (1 bis 12)
%M Minuten (00 bis 59)
%p Vor- oder Nachmittag (AM, PM)
%r Zeitangabe, zwölf Stunden (hh:mm:ss AM/PM)
%T Zeitangabe, 24 Stunden (hh:mm:ss)
%Z Zeitzone

Durch Angabe von -d DATUM (oder --date=DATUM) wird das angegebene DATUM verwendet. Mögliche Angaben sind z. B. yesterday, next, 3 days ago oder das volle Datum (09 June 1973):

huhn@asteroid:~$ date -d "09 June 1973"
Sam Jun 9 00:00:00 CET 1973

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • mail, mailx, Mail
    Das Programm mail bietet zwar auf den ersten Blick längst nicht den Komfort anderer Clients unter Linux, hat aber neben den Standardfunktionen eine ganze Reihe Optionen, die es zur ersten Wahl bei einem Kommandozeilen-gesteuerten Einsatz (z. B. in Skripten) machen.
  • Zu Befehl: ssh, scp
    Die klassischen Unix-Programme Telnet und FTP erlauben Verbindungen und Datei-Transfers zu anderen Rechnern im Netz, sind aber unsicher: Alle Daten werden unverschlüsselt übertragen. Deswegen verwenden man heute die SSH-Tools (Secure Shell), die das Gleiche ermöglichen, dabei aber durch Verschlüsselung für Sicherheit sorgen.
  • ls
    Lassen Sie sich Ihre Dateien doch mal auf der Kommandozeile auflisten! Mit ls behalten Sie dabei den Überblick.
  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • Zu Befehl: pwd, cd, pushd, popd und dirs
    Die Wege im Verzeichnisdschungel sind unergründlich. Wie Sie auf dem rechten Pfad bleiben und welche Kommandos bei der Navigation helfen, zeigt diese "Zu Befehl"-Folge.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...