Sprichwörtlich

Das Programm date bringt für die Ausgabe ein paar nützliche Formatierungsparameter mit. Zusammen mit einem vorangestellten Pluszeichen (+) sorgen verschiedene Prozentzeichen-Buchstaben-Kombinationen fürs richtige Format:

$ date '+Heute ist der %d. Tag im Monat %B des Jahres %Y.'
Heute ist der 07. Tag im Monat Juni des Jahres 2005.

Hier führt %d zu einer zweistelligen Ausgabe des Tages, %B steht für den Monat in Langform und %Y für das Jahr (vierstellig). Eine Übersicht der wichtigsten Format-Platzhalter finden Sie in Tabelle 1.

Der Einsatz dieser Optionen ist immer dann sinnvoll, wenn Sie Teile des aktuellen Datums und der Uhrzeit benötigen. Zusammen mit tar und date erstellen Sie beispielsweise Backups, deren Dateinamen automatisch Tag, Monat und Jahr enthalten:

$ tar cvfj backup_-_$(date +'%d')_$(date +'%m')_$(date +'%y').tar.bz2 *

Tabelle 1: Formatierung der "date"-Ausgabe

%H Stunden (00 bis 23)
%I Stunden (01 bis 12)
%M Minuten (00 bis 59)
%S Sekunden (00 bis 60); der Bereich umfasst 60 und nicht 59 Sekunden wegen der Schaltsekunde.
%p Vor- oder Nachmittag (AM, PM)
%r Zeitangabe, zwölf Stunden (hh:mm:ss AM/PM)
%R Zeitangabe, 24 Stunden (hh:mm:ss), entspricht damit %H:%M
%s Sekunden seit dem 1. Januar 1970 (Unix-Zeit)
%Z Aktuelle Zeitzone (CEST, GMT usw.)
%a Wochentag in Kurzform (Son, Mon usw.)
%A Wochentag in Langform (Sonntag, Montag usw.)
%b Monat in Kurzform (Jan, Feb usw.)
%B Monat in Langform (Januar, Februar usw.)
%d Tag in zweistelliger Zahl (01, 31 usw.)
%e Tag (einstellig mit Leerzeichen, z. B. 7)
%D Das Datum in der Form mm/dd/yy
%j Zeigt, der wie vielte Tag im angegebenen Jahr es ist – für den 1. Januar also 1 und in Nicht-Schaltjahren 365 für den 31. Dezember.
%u Zeigt, der wie vielte Wochentag es ist (1 bis 7).
%U Zeigt die wie vielte Woche im angegebenen Jahr es ist (00 bis 53).
%y Jahr, zweistellig (00 bis 99)
%Y Jahr, vierstellig (z. B. 1973)
%% Druckt das Prozentzeichen selbst.
%n Zeilenende
%t Tabulator

Heute, heute, nur nicht morgen…

Die date-Ausgabe können Sie mit der Option -d weiter spezifizieren. Der Parameter versteht als zusätzliche Angabe eine ganze Reihe englischer Schlüsselwörter und Zahlen. Um beispielsweise das Datum von morgen oder gestern auszugeben, setzen Sie die Begriffe tomorrow und yesterday ein:

$ date -d tomorrow
Di Jun  7 16:45:15 CEST 2005
$ date -d yesterday
So Jun  5 16:46:15 CEST 2005

Weitere Schlüsselwörter sind relative Angaben (next, ago usw.), feste Datumsangaben (09 June 1973, 09 Jun 73 usw.), Wochentage (Monday, Tuesday usw.) und relative Zeitangaben (day, year, week, month, fortnight = 14 Tage usw.), so dass Sie den gestrigen Tag ebenfalls über den Aufruf

date -d '1 day ago'

berechnen können. Setzen Sie wie im Beispiel mehr als ein Schlüsselwort ein, müssen Sie die Datumsangabe in einfache ('') oder normale ("") Hochkommas einschließen. Zusammen mit den Ausgabeformat-Optionen können Sie so beispielsweise den letzten Monat

$ date -d '1 month ago' +'Letzter Monat: %B'
Letzter Monat: Mai

oder den Wochentag des dritten Januars ausgeben:

$ date -d 'third January' +%A
Montag

Termingeplagte mit Deadlines rechnen darüber hinaus mit einem einzigen Befehl auf der Kommandozeile aus, wie viele Tage bis zur Fertigstellung eines Projektes noch bleiben. Dazu greifen Sie auf die arithmetischen Fähigkeiten der Bash zurück; der zu berechnende Ausdruck steht dabei in doppelten runden Klammern, z. B.

$ echo $((1-1))
0

Um die Tage bis zur Deadline zu berechnen, stehen in den Klammern zwei date-Ausdrücke: der Tag der Deadline und davon abgezogen das aktuelle Datum:

$ echo $((`date -d '29 July 2005' +%j`-`date +%j`))
53

Die Formatierung +%j schaltet dabei wieder auf ein "Durchzählen" der Tage eines Jahres um – der 1. Februar ist Tag 32.

Da dieser Aufruf nur funktioniert, wenn beide Tage im selben Jahr liegen, können Sie zu einem kleinen Trick greifen: Dazu ersetzen Sie den Jahrestag (%j) durch die Unix-Zeit (%s) – die zählt die vergangenen Sekunden seit dem 01.01.1970 (0:00 Uhr). Die so berechnete Differenz in Sekunden teilen Sie noch durch 60*60*24 = 86400, um daraus Tage zu erhalten:

$ echo "$((`date -d '09 June 2006' +%s`-`date +%s`)) / 86400" | bc -l
366.45836805555555555555

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Richtig ticken
    Wer hat an der Uhr gedreht? Für viele Anwendungen ist es äußerst wichtig, dass der PC die korrekte Zeit(zone) kennt. NTP und Co. sorgen dafür, dass ihr PC richtig tickt.
  • Zu Befehl: date & cal
    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.
  • Volkers alternatives Editorial
    Kennt ihr nicht auch diese Werbung von diesem Waschmittel? Da wird mit der neuen Weissheits-Dimension geworben. Ja, zum Teufel, wo ist nur diese Weissheits-Dimension? Gut, wir haben Höhe, Tiefe und Breite als Feld-, Wald und Wiesendimensionen, aber wo ist da noch Platz für eine Weissheits-Dimension? Vielleicht habe ich aber auch den ganzen Spott nicht verstanden, und die meinen in Wirklichkeit die Weisheitsdimension – sind die helle!
  • Teil 7: Benutzerfreundliche Ein-/Ausgabe
    Im letzten Teil des Bash-Programmierkurses geht es um die benutzerfreundliche Gestaltung von Eingaben und Dialogen am Beispiel der Programme dialog, gdialog und kdialog.
  • The Answer Girl
    Dass der Computeralltag auch unter Linux des Öfteren für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im LinuxUser zeigt, wie man mit solchen Problemchen elegant fertig wird.
Kommentare

Infos zur Publikation

LU 05/2016: DATEISYSTEME

Digitale Ausgabe: Preis € 5,99
(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!       

Aktuelle Fragen

MS LifeCam HD-5000 an Debian
Kay Michael, 13.04.2016 22:55, 0 Antworten
Hallo, ich versuche die oben erwähnte Cam an einem Thin Client mit Debian zu betreiben. Linux...
Import von Evolution nach KMail erzeugt nur leere Ordner
Klaus-Christian Falkner, 06.04.2016 12:57, 2 Antworten
Hallo, da ich vor einiger Zeit von Ubuntu auf Kubuntu umgestiegen bin, würde ich gerne meine E...
Sophos lässt sich nicht unter Lubuntu installieren
Chrstina Turm, 30.03.2016 20:56, 3 Antworten
Hi Leute, habe mir vor paar Tagen auf ein Notebook, das ohne Linux ausgedient hätte, Linux dr...
Novell Client auf Raspbian
Chris Baum, 16.03.2016 15:13, 3 Antworten
Hallo Community, ich hätte eine Frage, und zwar geht es um folgendes: Ich möchte eine Datei...
Pantheon konfigurieren (eOS)
John Smith, 16.03.2016 13:50, 0 Antworten
Hallo ins Forum, ich bin neu in der Linuxwelt und fühle mich bereits sehr wohl. Mein neues Sys...