Anzeigen von Kalenderereignissen als Text im Terminal

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 bereitstellt, /usr/share/calendar/ und den Befehl 'calendar', 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 zweideutigen Namen, ähnlich wie "D4385-GS57-D352-GA248592.calendar". Und einige Ordner enthalten viele *.ics-Dateien, die meiner Meinung nach Kalenderereignisse sind.

calendarfunktioniert nicht mit *.ics-Dateien, siehe man calendarfür das unterstützte Dateiformat. Aber ich bin gespannt, ob es andere Möglichkeiten gibt, den Inhalt Ihres Kalenders in lesbarer Form aufzulisten.
@Patrix Das stimmt. Ich habe die Manpage durchgelesen, als ich von diesem Befehl erfahren habe. Ich weiß nicht viel darüber, wie die Kalender im modernen 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.

Antworten (3)

Wie wäre es mit sowas:

$ 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'
Fist’s Birthday
2014-05-16 05:44:20
Secon’s Birthday
2014-07-26 09:58:49
Third’s Birthday
2014-05-16 05:44:20
...

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

Das ist großartig, ich arbeite gerade einen Sed-Anfängerleitfaden durch, um zu lernen, wie das funktioniert. Ich hoffe, genug zu lernen, um Ereignisse nach Datum zu filtern. Idealerweise möchte ich in der Lage sein, einen Befehl zu übergeben, der Ereignisse für den aktuellen Tag und vielleicht fünf Tage anzeigt.
Wenn Sie folgende Fehlermeldung erhalten: xargs: grep: Argument list too long Use: cd ~/Library/Calendars/; grep -r -h -e "SUMMARY" -e "DTSTAMP" . --include='*.ics'for the first part until sed's.

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

brew install ical-buddy 

von hasseg.org/icalBuddy/

icalBuddy ist ein Befehlszeilen-Dienstprogramm, das verwendet werden kann, um Listen von Ereignissen und Aufgaben/To-dos aus der OS X-Kalenderdatenbank (derselben, die iCal verwendet) abzurufen.

Die Homebrew-Version ist jetzt zu finden unter: brew install ical-buddy. Beachten Sie den Bindestrich.
Ausgezeichnet, ich brauchte die Titel aller meiner morgigen Veranstaltungen, und zwar diese:icalBuddy -eep '*' -nc 'eventsToday+1'

Sie sollten sich icalbuddy http://hasseg.org/icalBuddy/ ansehen . 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) und kann in Terminal, Geektool usw. verwendet werden.

FYI - 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
Seitdem scheint es behoben zu sein.