Wyświetlanie wydarzeń w kalendarzu jako tekstu w terminalu

10

Czy w Yosemite można wyświetlać wydarzenia z mojego kalendarza w wierszu poleceń?

Zdaję sobie sprawę z zapasów kalendarzy z zapasami dla jabłek, takich jak święta i takie, / usr / share / calendar / oraz polecenia „calendar”, aby wyświetlić wymienione w nich wydarzenia. Czy istnieje sposób, aby zrobić to samo, ale wyświetlić listę wydarzeń z moich własnych kalendarzy?

Odkryłem, że osobiste kalendarze są przechowywane w ~ / Library / Calendars, ale wszystko, co znalazłem w tym folderze, nie działa z poleceniem „kalendarz”. Istnieje kilka folderów o niejednoznacznych nazwach podobnych do „D4385-GS57-D352-GA248592.calendar”. Niektóre foldery zawierają wiele plików * .ics, które moim zdaniem są wydarzeniami w kalendarzu.

mindheavy
źródło
calendarnie działa z plikami * .ics, sprawdź man calendarobsługiwany format pliku. Jestem jednak ciekawy, czy istnieją inne sposoby wyświetlania zawartości kalendarza w czytelnej formie.
nohillside
@patrix Zgadza się. Przeczytałem stronę podręcznika, kiedy dowiedziałem się o tym poleceniu. Nie wiem za dużo o tym, jak działają kalendarze we współczesnym systemie OS X, ale myślę, że pliki * .ics są pozycjami kalendarza. To, o czym wspomniałeś, jest tym, czego szukam, innymi sposobami, aby wyświetlić zawartość kalendarza w formie tekstowej.
mindheavy,

Odpowiedzi:

8

Co powiesz na coś takiego:

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

To polecenie wyświetli wszystkie zdarzenia we wszystkich twoich kalendarzach (łącznie z subskrybowanymi).

Jherran
źródło
1
To świetnie, pracuję teraz nad przewodnikiem dla początkujących, aby dowiedzieć się, jak to działa. Mam nadzieję, że nauczę się wystarczająco, aby filtrować wydarzenia według daty. Idealnie chciałbym móc przekazać polecenie pokazujące wydarzenia na bieżący dzień i może pięć dni poza domem.
mindheavy,
Jeśli pojawia się błąd: xargs: grep: lista argumentów jest za długa Użyj: cd ~/Library/Calendars/; grep -r -h -e "SUMMARY" -e "DTSTAMP" . --include='*.ics'do pierwszej części, aż sed.
pegasuspect
9

Powinieneś zajrzeć do icalbuddy http://hasseg.org/icalBuddy/ . Pozwala to skonfigurować dni, które chcesz wydrukować, według daty / kalendarza i wszystkich pól. W rzeczywistości świetnie współdziała z wszelkiego rodzaju kalendarzami (zsynchronizowanymi i nie) i może być używany w terminalu, geektool itp.

Clayton C.
źródło
Do Twojej wiadomości - iCalBuddy jest świetny, ale zgłoszono tutaj błąd w OS X 10.11: github.com/ali-rantakari/icalBuddy/issues/14
Matt
Od tego czasu wydaje się być naprawiony.
Martin Delille,
8

Lubię używać Homebrew do instalowania wersji icalbuddy, która działa dobrze z OS X 10.11

brew install ical-buddy 
Fischmuetze
źródło
1
Wersja homebrew można teraz znaleźć na stronie: brew install ical-buddy. Uwaga kreska.
Richard Kranendonk,