# Handbuch zu &konsolekalendar;

## Einleitung

&konsolekalendar; ist eine Befehlszeilenschnittstelle für Kalender. Mit seiner Hilfe kann man Termine über die Befehlszeile oder eine Skriptsprache ansehen, einfügen, löschen oder verändern. Weiterhin kann &konsolekalendar; einen neuen Kalender erstellen, ihn in einer ganzen Anzahl Formate exportieren und andere Kalender importieren.

Standardmäßig zeigt &konsolekalendar; die Terminliste des Standardkalenders für den heutigen Tag (von 7:00 bis 17:00 Uhr) an.

Die Hauptfunktionen von &konsolekalendar;:

- Anzeigen von Kalendereinträgen mit Startzeitpunkt und Endzeitpunkt

- Einfügen (add) von Kalendereinträgen

- Entfernen (delete) von Kalendereinträgen

- Ändern (modify) von Kalendereinträgen

- Erstellen eines neuen Kalenders

- Exportieren eines Kalender in fremde Dateiformate

- Importieren eines vorhandenen Kalenders

Bei &konsolekalendar; handelte es sich nicht um eine weitere grafische Benutzeroberfläche eines &kde;-Kalenders (also &korganizer;). Stattdessen kommt &konsolekalendar; genau dann zum Einsatz, wenn eine grafische Oberfläche nicht gewünscht oder nicht nutzbar ist.

&konsolekalendar; bietet weder eine vollständige Programmiersprache zur Abfrage von Kalendern noch ist es die Absicht der Autoren, solch eine Programmiersprache jemals zu erstellen. Mit einfachen Befehlszeilenparametern kann eine Liste von Terminen bearbeitet werden.

## Merkmale

Dieses Kapitel erläutert die Funktionen von &konsolekalendar; und deren Kontrolle über Befehlszeilenparameter (wiederum: &konsolekalendar; ist keine grafische Benutzeroberfläche, sondern lediglich ein Befehlszeilenprogramm).

Das Einfügen, Entfernen und Verändern von Terminen und der Export in andere Dateiformate wird erläutert. Weiterhin wird die Erzeugung und der Import eines Kalenders erklärt.

### Termine anzeigen lassen

Der Standardmodus entspricht dem Parameter `--view` und zeigt alle Termine in einem angegebenen Zeitrahmen an.

Alle heutigen Termine zwischen 7:00 Uhr und 17:00 Uhr:

    % konsolekalendar

Das folgende Beispiel zeigt alle Termine der Woche vom 18. - 22. August an:

    % konsolekalendar --view --date 2016-08-18  --end-date 2016-08-22

Zeigt den nächsten Termin oder die nächsten Termine ab der aktuellen Uhrzeit an:

    % konsolekalendar --next

Um alle Termine der nächsten 5 Tage zu sehen, geben Sie ein:

    % konsolekalendar --show-next 5

### Termine einfügen

&konsolekalendar; kann Termine in einen -Kalender oder eine Kalender-Ressource mit dem Befehlszeilenparameter `--add` eintragen. Erfolgreich eingetragene Termine werden von den &kde;-Kalenderanwendungen (wie &korganizer;) unmittelbar angezeigt.

Sie erhalten eine Liste aller Kalender und deren Kennungen mit:

    % konsolekalendar --list-calendars

Das folgende Beispiel fügt einen Termin für den 01.12.2016 um 10:00 Uhr ein, der um 12:00 Uhr endet. Der Termin mit dem Titel Arztbesuch wird im Kalender des Benutzers mit der Kennung 8 eingefügt:

    % konsolekalendar --add --calendar 8 --date 2016-12-03 --time 10:00 \
    --end-time 12:00 --summary "Arztbesuch"

Das folgende Beispiel fügt den eigenen Geburtstag in den Kalender mit der Kennung 8 ein:

    % konsolekalendar --add --calendar 8 --date 2016-12-06 --summary "Mein Geburtstag" \
    --description "Feier"

Eine Woche Urlaub wird in einen Kalender mit der Kennung 8 eingefügt:

    % konsolekalendar --add --calendar 12 --date 2017-08-01 \
    --end-date 2017-08-07 --summary "Urlaub" --description "Ich löse mich in Luft auf!"

### Einträge entfernen

Einträge werden durch den Parameter `--delete` von &konsolekalendar; aus der Kalenderdatei oder anderen Ressourcen entfernt. Dazu muss die eindeutige Kennung (UID) über den Parameter `--uid` angegeben werden. Diese UID findet man, indem man den Termin zunächst über die Parameter `--view`, `--next` oder `--show-next` anzeigen lässt.

Erfolgreich gelöschte Termine werden unmittelbar aus den &kde;-Kalender-Anwendungen wie &korganizer; gelöscht.

Das Entfernen eines Eintrages kann nicht rückgängig gemacht werden. Ein entfernter Eintrag ist und bleibt entfernt.

Im folgenden Beispiel wird der Termin mit der UID `&konsolekalendar;-1887551750.196` entfernt:

    % konsolekalendar --delete --uid &konsolekalendar;-1887551750.196

### Einträge ändern

Der Parameter zum Ändern von Einträgen in &konsolekalendar; lautet `--change`. Auch hier muss der Termin über die eindeutige Kennung (UID) mit dem Parameter `--uid` identifiziert werden. Die UID kann man ermitteln, indem man sich den Termin mit `--view` , `--next` oder `--show-next`anzeigen lässt.

Änderungen verhalten sich genauso wie neu eingefügte Termine: Sie können Startzeitpunkt, Endzeitpunkt, Beschreibung, Ort und Zusammenfassung angeben. Erfolgreich geänderte Termine werden unmittelbar in den &kde;-Kalenderapplikationen (wie &korganizer;) geändert.

Beispiel: Die Zusammenfassung (summary) und Beschreibung (description) eines Termins mit der UID `&konsolekalendar;-1887551750.196` wird verändert.

`%```konsolekalendar` `--change` `--uid `&konsolekalendar;-1887551750.196`` `--summary `"Untersuchung"`` `--description `"Termin beim Nervenarzt."```

### Einen neuen Kalender erzeugen

Mit &konsolekalendar; können Sie neue Kalender aus vorhandenen Dateien erstellen. Benutzen Sie dazu die Option `--create` mit dem Dateinamen als Argument. Die Datei muss eine gültige iCal- oder vCal-Datei sein.

Hinweis: Sie können die Option `--dry-run` nicht als Test benutzen, ob die Ressource erstellt werden kann.

Hinweis: &konsolekalendar; benötigt diese Datei, um korrekt zu funktionieren, daher sollten Sie diese Datei niemals manuell löschen.

Technischer Hinweis: &konsolekalendar; erstellt mit diesem Befehl eine neue Akonadi-Ressource, die diese Datei verwendet. Sie können jedoch mehrere Akonadi-Ressourcen erstellen, dieselbe Datei verwenden.

Einen neuen Kalender aus einer vorhandenen Datei mit dem Namen ``vacation.ics`` erstellen:

    % konsolekalendar --create vacation.ics

Die Ressource wird als vacation mit der Option `--list-calendars` angezeigt

Es ist nicht möglich, eine Akonadi-Ressource mit &konsolekalendar; zu löschen, dafür müssen Sie &korganizer; oder akonadiconsole verwenden.

### Kalender in andere Formate exportieren

Mit &konsolekalendar; können Kalender in einige gängige Formate exportiert werden. Dabei handelt es sich um eine besondere Form der Anzeige. Standardmäßig werden Termine im Format &konsolekalendar;-Text angezeigt. Ein davon abweichendes Format stellt man über den Parameter `--export-type` ein.

Eine vollständige Liste aller unterstützten Exportformate erhält man durch den Parameter `--export-list`:

    % konsolekalendar --export-list

### Exportformate

Einige der wichtigsten Exportformate werden im folgenden Abschnitt beschrieben.

#### &konsolekalendar;-Textformat

Das &konsolekalendar;-Textformat ist das Standardformat von &konsolekalendar; und dazu gedacht, einfach lesbar und für nachfolgende Skripte verarbeitbar zu sein.

Das &konsolekalendar;-Textformat lautet:

    Datum:\t<Ereignisdatum>(dddd jjjj-MM-tt)
    [\t<Ereignisstartzeit>(hh:mm) - <Ereignisendzeit>(hh:mm)]
    Zusammenfassung:
    \t<Ereigniszusammenfassung | "(keine Zusammenfassung verfügbar)">
    Ort:
    \t<Ereignisort | "(kein Ort verfügbar)">
    Beschreibung:
    \t<Ereignisbeschreibung | "(keine Beschreibung verfügbar)">
    UID:
    \t<Ereignis-UID>
    --------------------------------------------------

Ausgabe von ``konsolekalendar` `--next` `--export-type` `Text``:

    Date:  Tuesday 2016-11-29
            8:00 - 9:00
    Summary:
            Besprechung
    Ort:
            Konferenzraum
    Description:
            Die gesamte Abteilung trifft sich im großen Konferenzraum.
    UID:
            &konsolekalendar;-1924621834.134
    --------------------------------------------------

#### &konsolekalendar;-Kurztextformat

Das Kurztextformat ist eine kompaktere, weniger wortreiche Variante des nativen Formats von &konsolekalendar;.

Das &konsolekalendar;-Kurztextformat lautet:

    [--------------------------------------------------]
    {<Ereignisdatum>(dddd jjjj-MM-tt)]
    [<Ereignisstartzeit>(hh:mm) - <Ereignisendzeit>(hh:mm) | "\t"]
    \t<Ereigniszusammenfassung | \t>[, <Ereignisort>]
    \t\t<Ereignisbeschreibung | "\t">

Ausgabe von ``konsolekalendar` `--next` `--export-type` `Short``:

    --------------------------------------------------
    Tuesday 2016-11-29
    08:00 - 09:00   Mitarbeiterbesprechung, Konferenzraum
                    Das gesamte Team trifft sich zu einer Projektbesprechung.

#### durch Kommas getrennte Werte (CSV-Format)

Die Informationen des Termins werden in der gleichen Reihenfolge wie im &konsolekalendar;-Textformat angezeigt. Der einzige Unterschied ist, alle Informationen befinden sich in einer Zeile in einer durch Kommas getrennten Liste. Dieses Format kann z.B. von Tabellenkalkulationsprogrammen wie &calligrasheets;, OpenOffice.org und &Microsoft; Excel gelesen werden. Das CSV-Format eignet sich auch gut zur Weiterverarbeitung durch Skripte.

Das CSV-Format lautet:

    "Weekday, Month Day, Year","HH:MM","Weekday, Month Day, Year","HH:MM","Summary","Location","Description","UID"

Ausgabe von ``konsolekalendar` `--next` `--export-type` `CSV``:

    2016-11-29,08:00,2016-11-29,09:00,Besprechung,Konferenzraum,Die gesamte Abteilung trifft sich \
    im großen Konferenzraum.,&konsolekalendar;-1924621834.134

#### &HTML;-Format

Der &HTML;-Export erzeugt eine gültige &HTML; -Datei zur Veröffentlichung im WWW. Das Format ist nicht geeignet zur Verarbeitung durch Skripte aber zur einfachen Veröffentlichung.

#### HTMLmonth-Format

Dieses Format produziert eine &HTML;-Datei, die alle Termine im angegebenen Zeitraum enthält. Das Format ist nicht geeignet zur Verarbeitung durch Skripte aber zur einfachen Veröffentlichung.

### Kalender importieren

&konsolekalendar; kann iCal- oder vCal-Kalenderdateien in Kalender importieren. Alle Termine werden eingefügt, identische Termine, die bereits im Kalender vorhanden sind, werden übersprungen.

Mit folgendem Befehl fügen Sie die Kalenderdatei `vacation.ics` in den Kalender mit der Kennung `8` ein:

    % konsolekalendar --import vacation.ics --calendar 8

## Befehlszeilenparameter

Folgende Optionen versteht &konsolekalendar;:

Option | Beschreibung
Allgemeine Optionen:
`--help, --help-all` | Zeigt Hilfetexte zu den Optionen an.
`--author` | Zeigt Informationen über die Programmautoren.
`-v, --version` | Zeigt die Versionsnummer des Programms an.
`--license` | Zeigt Informationen zu den Lizenzbestimmungen.
Optionen:
`--verbose` | Gibt nützliche Laufzeitmeldungen aus.
`--dry-run` | Es wird ausgegeben, was getan würde, die Aktionen werden aber nicht wirklich durchgeführt (eignet sich gut für Testzwecke).
`--allow-gui` | Ressourcen zulassen, die möglicherweise ein Benutzerschnittstelle erfordern. Bei den meistem Funktionen werden nur Ressourcen (wie Datei-basierte Kalender) benutzt, die keine Benutzerschnittstelle erfordern.
Ereignistypen (diese Optionen können kombiniert werden):
`--event` | Nur für Termine (Standard).
`--todo` | Operationen nur für Aufgaben ausführen, nicht implementiert.
`--journal` | Operationen nur für Journale ausführen, nicht implementiert.
Hauptarbeitsmodi:
`--view` | Gibt Termine im angegebenen Ausgabeformat aus.
`--add` | Fügt einen Termin in den Kalender ein.
`--change` | Ändert die Daten eines bestehenden Termins.
`--delete` | Entfernt einen bestehenden Termin.
`--create` `filename` | Erstellt eine neue Kalenderdatei aus einer vorhandenen Datei.
`--import` `Dateiname` | Importiert diesen Kalender in den Hauptkalender.
`--list-calendars` | Zeigt alle verfügbaren Kalender an.
Parameter für die Operationen:
`--all` | Zeigt alle Kalendereinträge an.
`--next` | Nächste Aktivität im Kalender anzeigen.
`--show-next` `Tage` | Ab dem angegebenen Datum die Aktivitäten der nächsten n Tage anzeigen.
`--uid` `Kennung` | Der Termin mit dieser Kennung wird angezeigt, entfernt oder geändert.
`--date` `Datum` | Beginnt mit dem angegebenen Tag [JJJJ-MM-DD]. Der Standardwert ist heute.
`--time` `Zeitpunkt` | Beginnt mit der angegebenen Zeit [HH:MM]. Der Standardwert ist 07:00. Um einen beweglichen Termin einzutragen oder zu ändern, verwenden Sie eine der Optionen `--time float` oder `--end-time float`.
`--end-date` `Datum` | Endet am angegebenen Tag [JJJJ-MM-DD]. Der Standardwert ist der unter `--date` angegebene Tag.
`--end-time` `Zeitpunkt` | Endet zu dieser Zeit [HH:MM]. Der Standardwert für die Ansicht ist 17:00. Um einen beweglichen Termin einzutragen oder zu ändern, verwenden Sie eine der Optionen `--time float` oder `--end-time float`.
`--epoch-start` `Zeit` | Beginnt zu dieser Zeit [Sekunden seit epoch].
`--epoch-end` `Zeit` | Endet zu dieser Zeit [Sekunden seit epoch].
`--summary` `Zusammenfassung` | Fügt eine Zusammenfassung zum Termin hinzu (bei add und change).
`--description` `Beschreibung` | Fügt eine Beschreibung zum Termin hinzu (bei add und change).
`--location` `Ort` | Fügt einen Ort zum Termin hinzu (bei add und change).
`--calendar` `id` | Legt den zu benutzenden Kalender fest. Ansonsten wird die Standardeinstellung von &korganizer; verwendet.
Exportparameter:
`--export-type` `Typ` | Export zum angegebenen Typ. Der Standardtyp ist Text.
`--export-file` `Dateiname` | Export in die angegebene Datei. Standardmäßig wird der Export zur Standardausgabe durchgeführt.
`--export-list` | Zeigt eine Liste der unterstützten Exportformate an.

## Fragen und Antworten

Welche Konfigurationsdateien verwendet &konsolekalendar;?

Keine.

Wie lauten die Namen von &konsolekalendar;?

Der Name von &konsolekalendar; ist konsolekalendar.

In welchem Format müssen Datumsangaben gemacht werden?

&konsolekalendar; erfordert die Eingabe von Datumsangaben nach dem ISO-8601-Standard, also: JJJJ-MM-DD. Dabei bedeutet JJJJ die Jahresangabe mit vier Ziffern (z.B. 2003), MM die Monatsangabe mit zwei Ziffern (01,02,...,12) und DD die Tagesangabe mit zwei Ziffern (01,02,...,31).

&konsolekalendar; exportiert Datumsangaben immer nach dem ISO-8601-Format.

In welchem Format müssen Zeitangaben gemacht werden?

Zeitangaben für &konsolekalendar; müssen unbedingt in Übereinstimmung mit dem ISO-8601-Standard eingegeben werden, also HH:MM:SS. Dabei bedeutet HH die Stunde zweiziffrig (01,02,...,24), MM die Minuten zweiziffrig (01,02,...,60), und SS die Sekunden ebenfalls zweiziffrig (01,02,...,60).

&konsolekalendar; exportiert Zeitangaben immer entsprechend dem ISO-8601-Standard.

Fügt &konsolekalendar; bei übereinstimmenden Zeiten einen neuen Termin ein, der identisch zu einem bereits vorhandenen ist?

Nein. Siehe nächste Frage.

Wie stellt &konsolekalendar; fest, ob ein Termin identisch zu einem bereits im Kalender vorhandenen ist?

&konsolekalendar; vergleicht Startzeitpunkt, Endzeitpunkt und Zusammenfassung mit allen im Kalender vorhandenen Terminen. Falls alle drei Angaben übereinstimmen, sind die Termine identisch.

Kann ein nicht-beweglicher Termin in einen beweglichen Termin umgewandelt werden?

Ja. Benutzen Sie die Option `--time float` mit `--change`.

Warum werden in den meisten Exportformaten die Kennungen (UIDs) ausgegeben?

Weil Sie die Kennungen (UIDs) zum Löschen oder Ändern von Terminen benötigen. Wenn Sie die UIDs von Terminen nicht sehen möchten, dann verwenden Sie den kurzen Exporttyp (`--export-type short`).

Wie kann ich eine Frage zu den FAQ hinzufügen?

Senden Sie Ihre Fragen an winter@kde.org.

## Danksagungen und Lizenz

&konsolekalendar; Programm Copyright 2002-2007:

- Tuukka Pasanen illuusio@mailcity.com

- Allen Winter winter@kde.org

Dokumentation Copyright 2003:

- Allen Winter winter@kde.org

- Tuukka Pasanen illuusio@mailcity.com

Übersetzung Deutsches KDE-Teamkde-i18n-de@kde.org

&underFDL; &underGPL;
&documentation.index;