Отображение событий календаря в виде текста в терминале

10

Используя Yosemite, есть ли способ отображать события из моего календаря в командной строке?

Мне известны фондовые календари, поставляемые Apple для таких вещей, как праздники и т. Д., / Usr / share / calendar / и команда 'calendar' для отображения событий, перечисленных в них. Есть ли способ сделать то же самое, но перечислить события из моих собственных календарей?

Я обнаружил, что личные календари хранятся в ~ / Library / Calendars, но все, что я нашел в этой папке, не работает с командой 'calendar'. Есть несколько папок с неоднозначными именами, похожими на «D4385-GS57-D352-GA248592.calendar». А некоторые папки содержат много файлов * .ics, которые я считаю календарными событиями.

mindheavy
источник
calendarне работает с файлами * .ics, см. man calendarподдерживаемый формат файла. Но мне любопытно, есть ли какие-то другие способы перечислить содержимое вашего календаря в удобочитаемой форме.
nohillside
@patrix Это верно. Я прочитал справочную страницу, когда узнал об этой команде. Я не знаю слишком много о том, как календари работают в современной OS X, но я думаю, что файлы * .ics являются записями календаря. То, что вы упомянули, это то, что я ищу, какие-то другие средства для отображения содержимого календаря в текстовой форме.
mindheavy

Ответы:

8

Как насчет чего-то такого:

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

Эта команда выведет все события во все ваши календари (включая подписные).

jherran
источник
1
Это здорово, я сейчас прорабатываю руководство для начинающих sed, чтобы узнать, как это работает. Я надеюсь узнать достаточно, чтобы отфильтровать события по дате. В идеале я хотел бы иметь возможность передать команду, которая показывает события на текущий день и, возможно, пять дней.
mindheavy
Если вы получаете сообщение об ошибке: xargs: grep: список аргументов слишком длинный. Используйте: cd ~/Library/Calendars/; grep -r -h -e "SUMMARY" -e "DTSTAMP" . --include='*.ics'для первой части до sed.
pegasuspect
9

Вы должны заглянуть в icalbuddy http://hasseg.org/icalBuddy/ . Это позволяет вам указать, какие дни вы хотите вывести, по дате / календарю и всем полям. На самом деле он отлично взаимодействует с календарями всех видов (синхронизированными и нет) и может использоваться в терминале, geektool и т. Д.

Клейтон С.
источник
К вашему сведению - iCalBuddy великолепен, но здесь сообщается об ошибке в OS X 10.11: github.com/ali-rantakari/icalBuddy/issues/14
Мэтт,
Кажется, с тех пор это исправить.
Мартин Делиль
8

Мне нравится использовать Homebrew для установки версии icalbuddy, которая отлично работает с OS X 10.11

brew install ical-buddy 
Fischmuetze
источник
1
Homebrew версии теперь можно найти по адресу: brew install ical-buddy. Обратите внимание на тире.
Ричард Кранендонк