Mostrar eventos de calendario como texto, en la terminal

10

Usando Yosemite, ¿hay alguna manera de mostrar eventos de mi calendario en la línea de comando?

Soy consciente de los calendarios de existencias que Apple suministra para cosas como vacaciones y cosas así, / usr / share / calendar / y el comando 'calendar' para mostrar los eventos enumerados en estos. ¿Hay alguna manera de hacer lo mismo pero enumerar eventos de mis propios calendarios?

Descubrí que los calendarios personales se almacenan en ~ / Library / Calendars, pero todo lo que encontré dentro de esa carpeta no funciona con el comando 'calendar'. Hay varias carpetas con nombres ambiguos similares a "D4385-GS57-D352-GA248592.calendar". Y algunas carpetas contienen muchos archivos * .ics, que creo que son eventos de calendario.

alucinante
fuente
calendarno funciona con archivos * .ics, consulte man calendarel formato de archivo compatible. Pero tengo curiosidad por saber si hay otros medios para enumerar el contenido de su calendario de forma legible.
nohillside
@patrix Eso es correcto. Leí la página del manual cuando me enteré de este comando. No sé demasiado sobre cómo funcionan los calendarios en el OS X moderno, pero creo que los archivos * .ics son entradas de calendario. Lo que mencionó es lo que estoy buscando, algún otro medio para enumerar el contenido del calendario en forma de texto.
mindheavy

Respuestas:

8

¿Qué tal algo así?

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

Este comando generará todos los eventos en todos sus calendarios (incluidos los suscritos).

jherran
fuente
1
Esto es genial, estoy trabajando en una guía de principiantes sed ahora mismo para aprender cómo funciona esto. Espero aprender lo suficiente como para filtrar eventos por fecha. Idealmente, me gustaría poder pasar un comando que muestre eventos para el día actual y tal vez cinco días fuera.
mindheavy
Si obtiene el error: xargs: grep: Lista de argumentos demasiado larga Uso: cd ~/Library/Calendars/; grep -r -h -e "SUMMARY" -e "DTSTAMP" . --include='*.ics'para la primera parte hasta sed.
pegasuspect
9

Debería buscar en icalbuddy http://hasseg.org/icalBuddy/ . Esto le permite configurar qué días desea generar, por fecha / calendario y todos los campos. En realidad, interactúa muy bien con calendarios de todo tipo (sincronizados y no) y puede usarse en terminales, geektool, etc.

Clayton C.
fuente
FYI - iCalBuddy es genial pero hay un error con OS X 10.11 reportado aquí: github.com/ali-rantakari/icalBuddy/issues/14
Matt
Parece estar arreglado desde entonces.
Martin Delille
8

Me gusta usar Homebrew para instalar una versión de icalbuddy que funciona bien con OS X 10.11

brew install ical-buddy 
Fischmuetze
fuente
1
Versión homebrew ahora se puede encontrar en: brew install ical-buddy. Tenga en cuenta el guión.
Richard Kranendonk