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


10

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

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

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


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

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


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 

1
Homebrew версии теперь можно найти по адресу: brew install ical-buddy. Обратите внимание на тире.
Ричард Кранендонк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.