Home / LinuxUser / 2005 / 07 / Kalender auf der Kommandozeile

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.

Zeitzauber

Kalender auf der Kommandozeile

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
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

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