Exibindo eventos do calendário como texto, no terminal

10

Usando o Yosemite, existe uma maneira de exibir eventos do meu calendário na linha de comando?

Estou ciente dos calendários de estoque que a Apple fornece para coisas como feriados e outras coisas, / usr / share / calendar / e o comando 'calendar' para exibir eventos listados nesses. Existe uma maneira de fazer a mesma coisa, mas listar eventos de meus próprios calendários?

Descobri que calendários pessoais são armazenados em ~ / Library / Calendars, mas tudo o que encontrei nessa pasta não funciona com o comando 'calendar'. Existem várias pastas com nomes ambíguos semelhantes a "D4385-GS57-D352-GA248592.calendar". E algumas pastas contêm muitos arquivos * .ics, que eu acho que são eventos de calendário.

mindheavy
fonte
calendarnão funciona com arquivos * .ics, consulte man calendaro formato de arquivo suportado. Mas estou curioso para saber se existem outros meios para listar o conteúdo do seu calendário de forma legível.
nohillside
@patrix Isso mesmo. Eu li a página do manual quando descobri esse comando. Não sei muito sobre como os calendários funcionam no OS X moderno, mas acho que os arquivos * .ics são entradas de calendário. O que você mencionou é o que estou procurando, alguns outros meios para listar o conteúdo do calendário em forma de texto.
mindheavy

Respostas:

8

Que tal algo assim:

$ 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 produzirá todos os eventos em todos os seus calendários (incluindo os inscritos).

jherran
fonte
1
Isso é ótimo, estou trabalhando neste momento com um guia para iniciantes sed para saber como isso funciona. Espero aprender o suficiente para filtrar eventos por data. Idealmente, eu gostaria de passar um comando que mostre eventos para o dia atual e talvez cinco dias fora.
mindheavy
Se você estiver recebendo erro: xargs: grep: Lista de argumentos muito longa Use: cd ~/Library/Calendars/; grep -r -h -e "SUMMARY" -e "DTSTAMP" . --include='*.ics'para a primeira parte até a sed.
pegasuspect
9

Você deve consultar o icalbuddy http://hasseg.org/icalBuddy/ . Isso permite que você configure os dias que deseja gerar, por data / calendário e todos os campos. Na verdade, ele interage muito com calendários de todos os tipos (sincronizados e não) e pode ser usado em terminal, geektool, etc.

Clayton C.
fonte
FYI - O iCalBuddy é ótimo, mas há um erro no OS X 10.11 relatado aqui: github.com/ali-rantakari/icalBuddy/issues/14
Matt
Parece estar consertado desde então.
Martin Delille
8

Eu gosto de usar o Homebrew para instalar uma versão do icalbuddy que funciona bem com o OS X 10.11

brew install ical-buddy 
Fischmuetze
fonte
1
Versão Homebrew agora pode ser encontrado em: brew install ical-buddy. Observe o traço.
Richard Kranendonk