Affichage des événements du calendrier sous forme de texte, dans le terminal

10

En utilisant Yosemite, existe-t-il un moyen d'afficher les événements de mon calendrier sur la ligne de commande?

Je connais les calendriers de stock fournis par Apple pour des choses comme les vacances et autres, / usr / share / calendar / et la commande 'calendrier' pour afficher les événements répertoriés dans ceux-ci. Existe-t-il un moyen de faire la même chose mais de répertorier les événements de mes propres calendriers?

J'ai trouvé que les calendriers personnels sont stockés dans ~ / Library / Calendars mais tout ce que j'ai trouvé dans ce dossier ne fonctionne pas avec la commande 'calendar'. Il existe plusieurs dossiers avec des noms ambigus similaires à "D4385-GS57-D352-GA248592.calendar". Et certains dossiers contiennent beaucoup de fichiers * .ics, qui, je pense, sont des événements de calendrier.

alourdi
la source
calendarne fonctionne pas avec les fichiers * .ics, voir man calendarpour le format de fichier pris en charge. Mais je suis curieux de savoir s'il existe d'autres moyens de répertorier le contenu de votre calendrier sous une forme lisible.
nohillside
@patrix C'est vrai. J'ai lu la page de manuel lorsque j'ai découvert cette commande. Je ne sais pas trop comment fonctionnent les calendriers dans OS X moderne, mais je pense que les fichiers * .ics sont des entrées de calendrier. Ce que vous avez mentionné, c'est ce que je recherche, un autre moyen de répertorier le contenu du calendrier sous forme de texte.
mindheavy

Réponses:

8

Que diriez-vous de quelque chose comme ça:

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

Cette commande affichera tous les événements de tous vos calendriers (y compris ceux auxquels vous êtes abonné).

jherran
la source
1
C'est super, je travaille en ce moment avec un guide pour débutants sed pour savoir comment cela fonctionne. J'espère en apprendre suffisamment pour filtrer les événements par date. Idéalement, j'aimerais pouvoir passer une commande qui affiche les événements de la journée en cours et peut-être cinq jours.
mindheavy
Si vous obtenez une erreur: xargs: grep: Liste d'arguments trop longue Utilisez: cd ~/Library/Calendars/; grep -r -h -e "SUMMARY" -e "DTSTAMP" . --include='*.ics'pour la première partie jusqu'à sed.
pegasuspect
9

Vous devriez regarder dans icalbuddy http://hasseg.org/icalBuddy/ . Cela vous permet de configurer les jours que vous souhaitez afficher, par date / calendrier et tous les champs. Il interagit en fait très bien avec des calendriers de toutes sortes (synchronisés et non) et peut être utilisé dans un terminal, un geektool, etc.

Clayton C.
la source
Pour info - iCalBuddy est génial mais il y a un bug avec OS X 10.11 signalé ici: github.com/ali-rantakari/icalBuddy/issues/14
Matt
Cela semble être corrigé depuis lors.
Martin Delille
8

J'aime utiliser Homebrew pour installer une version d'icalbuddy qui fonctionne bien avec OS X 10.11

brew install ical-buddy 
Fischmuetze
la source
1
La version homebrew peut maintenant être trouvé à l' adresse: brew install ical-buddy. Notez le tiret.
Richard Kranendonk