Anzeigen von Kalenderereignissen als Text im Terminal


10

Gibt es mit Yosemite eine Möglichkeit, Ereignisse aus meinem Kalender in der Befehlszeile anzuzeigen?

Ich kenne die Aktienkalender, die Apple für Dinge wie Feiertage und dergleichen liefert, / usr / share / calendar / und den Befehl 'Kalender', um die darin aufgeführten Ereignisse anzuzeigen. Gibt es eine Möglichkeit, dasselbe zu tun, aber Ereignisse aus meinen eigenen Kalendern aufzulisten?

Ich habe festgestellt, dass persönliche Kalender in ~ / Library / Calendars gespeichert sind, aber alles, was ich in diesem Ordner gefunden habe, funktioniert nicht mit dem Befehl 'calendar'. Es gibt mehrere Ordner mit mehrdeutigen Namen, die "D4385-GS57-D352-GA248592.calendar" ähneln. Und einige Ordner enthalten viele * .ics-Dateien, die ich für Kalenderereignisse halte.


calendarfunktioniert nicht mit * .ics-Dateien, siehe man calendardas unterstützte Dateiformat. Ich bin jedoch gespannt, ob es andere Möglichkeiten gibt, den Inhalt Ihres Kalenders in lesbarer Form aufzulisten.
Nohillside

@patrix Das stimmt. Ich habe die Manpage durchgelesen, als ich von diesem Befehl erfahren habe. Ich weiß nicht viel darüber, wie die Kalender in modernem OS X funktionieren, aber ich denke, die * .ics-Dateien sind Kalendereinträge. Was Sie erwähnt haben, ist das, wonach ich suche, ein anderes Mittel, um den Kalenderinhalt in Textform aufzulisten.
Mindheavy

Antworten:


8

Wie wäre es mit so etwas:

$ find ~/Library/Calendars -name "*.ics" |
      xargs grep -h -e "SUMMARY" -e "DTSTAMP" |
      sed -E 's/^[A-Z].*:(.*$)/\1/g' |
      sed -E 's/^([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2}).*$/\1-\2-\3 \4:\5:\6/g'
Fists Birthday
2014-05-16 05:44:20
Secons Birthday
2014-07-26 09:58:49
Thirds Birthday
2014-05-16 05:44:20
...

Dieser Befehl gibt alle Ereignisse in all Ihren Kalendern aus (einschließlich abonnierter).


1
Das ist großartig, ich arbeite gerade an einem Leitfaden für Anfänger, um zu erfahren, wie das funktioniert. Ich hoffe, genug zu lernen, um Ereignisse nach Datum zu filtern. Idealerweise möchte ich einen Befehl übergeben können, der Ereignisse für den aktuellen Tag und möglicherweise fünf Tage später anzeigt.
Mindheavy

Wenn Sie eine Fehlermeldung erhalten: xargs: grep: Argumentliste zu lang Verwenden Sie: cd ~/Library/Calendars/; grep -r -h -e "SUMMARY" -e "DTSTAMP" . --include='*.ics'für den ersten Teil bis sed's.
Pegasuspect

9

Sie sollten in icalbuddy http://hasseg.org/icalBuddy/ schauen . Auf diese Weise können Sie konfigurieren, welche Tage Sie ausgeben möchten, nach Datum / Kalender und allen Feldern. Es interagiert tatsächlich hervorragend mit Kalendern aller Art (synchronisiert und nicht synchronisiert) und kann in Terminals, Geektools usw. verwendet werden.


Zu Ihrer Information - iCalBuddy ist großartig, aber es gibt einen Fehler mit OS X 10.11, der hier gemeldet wird: github.com/ali-rantakari/icalBuddy/issues/14
Matt

Es scheint seitdem behoben zu sein.
Martin Delille

8

Ich verwende Homebrew gerne, um eine Version von icalbuddy zu installieren, die unter OS X 10.11 einwandfrei funktioniert

brew install ical-buddy 

1
Die Homebrew-Version finden Sie jetzt unter : brew install ical-buddy. Beachten Sie den Bindestrich.
Richard Kranendonk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.