+Dieser Abschnitt enthält zusätzliche Informationen, wie Sie LilyPond
+von der Kommandozeile ausführen können. Dies kann erforderlich sein,
+um etwa zusätzliche Optionen an das Programm zu übergeben. Außerdem
+sind einige Zusatzprogramme (wie etwa @code{midi2ly}) nur von der
+Kommandozeile verfügbar.
+
+Unter @q{Kommandozeile} verstehen wir die Kommandozeile des jeweiligen
+Betriebssystems. Windows Benutzern ist sie vielleicht eher unter den
+englischen Begriffen @q{DOS shell} oder @q{command shell} bekannt.
+MacOS@tie{}X Benutzer kennen sie eher unter @q{Terminal} oder @q{Konsole}.
+Sie sollten auch den Abschnitt @ref{Setup for MacOS X} konsultieren.
+
+Wie die Kommandozeile im jeweiligen Betriebssystem benutzt werden kann,
+soll in diesem Handbuch nicht näher beschrieben werden. Sehen Sie bitte
+im Handbuch Ihres Betriebssystems nach oder informieren Sie sich im
+Internet, wenn Sie mit der Kommandozeile nicht vertraut sind.
+
+
+@menu
+* Invoking lilypond::
+* Command line options for lilypond::
+* Environment variables::
+@end menu
+
+@node Invoking lilypond
+@subsection Invoking @command{lilypond}
+
+@cindex @command{lilypond} aufrufen
+@cindex Kommandozeilen-Optionen für @command{lilypond}
+@cindex Optionen an der Kommandozeile
+
+Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile
+aufgerufen werden.
+
+@example
+lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{}
+@end example
+
+
+Wird ein @file{Dateiname} ohne Erweiterung angegeben, so wird @file{.ly} als
+Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von
+@code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-})
+als @var{Dateiname}.
+
+Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus
+die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt.
+Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben
+werden, die dann einzeln und voneinander unabhängig abgearbeitet
+werden.@footnote{Der Zustand von GUILE wird allerdings nicht nach
+jeder Datei zurückgesetzt, sodass Achtung geboten ist, wenn in einer
+Datei globale Änderungen von Scheme aus durchgeführt werden.}
+
+Falls @file{Dateiname.ly} mehr als einen @code{\score}-Block enthält,
+werden die weiteren Stücke in durchnummerierte Dateien der Form
+@file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der
+Variable @code{output-suffix} zwischen den ursprünglichen Dateienamen
+und der Zahl eingefügt. Eine Lilypond-Datei @var{Dateiname.ly} mit dem Inhalt
+
+@example
+#(define output-suffix "Geige")
+\book @{ @dots{} @}
+#(define output-suffix "Cello")
+\book @{ @dots{} @}
+@end example
+
+@noindent
+erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und
+@var{Dateiname}@file{-Cello-1.pdf}.
+
+
+
+@node Command line options for lilypond
+@subsection Command line options for @command{lilypond}
+
+Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt:
+
+@table @code
+
+@item -e,--evaluate=@var{expr}
+Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien
+gelesen und interpretiert werden.
+Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke
+werden nacheinander ausgewertet.
+
+Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der
+Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der
+Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert:
+
+@example
+lilypond -e '(define-public a 42)'
+@end example
+
+@noindent
+Am Beginn der @file{.ly}-Datei muss dann das @code{guile-user} Modul noch geladen werden, bevor die Definition von @var{a} verfügbar ist:
+
+@example
+#(use-modules (guile-user))
+@end example
+
+
+@item -f,--format=@var{Format}
+Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind
+@code{svg}, @code{ps}, @code{pdf} und @code{png}.
+
+Beispiel: @code{lilypond -fpng @var{Dateiname}.ly}
+
+
+
+@item -d,--define-default=@var{Variable}=@var{Wert}
+Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert
+@var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt.
+Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen
+@var{Variable} der Variable vorangestellt werden. So ist etwa
+
+@cindex Point and Click, Kommandozeile
+
+@example
+-dno-point-and-click
+@end example
+
+@noindent
+dasselbe wie
+@example
+-dpoint-and-click='#f'
+@end example
+
+Hier sind ein paar interessante Optionen:
+
+@table @samp
+@item help
+Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren @code{-d}
+Optionen.
+
+@item paper-size
+Setzt das Standard-Papierformat,
+@example
+-dpaper-size=\"letter\"
+@end example
+
+@noindent
+Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash
+( @code{\"} ) stehen.
+
+
+@item safe
+Vertraut der @code{.ly} Datei nicht.
+
+Wenn LilyPond über einen Webserver verfügbar gemacht wird, @b{MUSS} unbedingt
+eine die Optionen @code{--safe} oder @code{--jail} angegeben werden.
+Die @code{--safe} Option verhindert, dass in der .ly-Datei angegebener
+Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel:
+
+@quotation
+@verbatim
+#(system "rm -rf /")
+{
+ c4^#(ly:export (ly:gulp-file "/etc/passwd"))
+}
+@end verbatim
+@end quotation
+
+Mit der @code{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen
+sicheren Modus ausgewertet. Dieser Modus ist vom GUILE @file{safe-r5rs} Modul
+abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der
+LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in
+@file{scm/@/safe@/-lily@/.scm} angegeben.
+
+Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle.
+
+Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme
+zu exportieren.
+
+@code{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren
+Ressourcen. In diesem Modus ist es also trotzdem möglich, dass LilyPond in einer
+Endlosschleife hängt, z.B. wenn zyklische Datenstrukturen an das Backend
+übergeben werden. Wenn LilyPond also auf einem öffentlich zugänglichen
+Webserver verfügbar gemacht wird, sollte der Prozess sowohl in der CPU-
+als auch in der Speichernutzung limitiert werden.
+
+Der sichere Modus verhindert auch, dass zahlreiche nützliche
+Musikfragmente von LilyPond verarbeitet werden. Die @code{--jail} Option ist
+eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur
+Einrichtung.
+
+@item backend
+Gibt an, welches Ausgabeformat das LilyPond Backend benutzt. Mögliche Werte
+für diese Option sind:
+
+@table @code
+@item ps
+PostScript-Ausgabeformat.
+
+@cindex PostScript Ausgabeformat
+
+Postscript-Dateien enthalten auch TTF-, Type1- und OTF-Schriften. Allerdings
+wird die gesamte Schriftart eingefügt und nicht nur die benötigten Zeichen.
+Vor allem wenn nicht-westliche Zeichensätze benutzt werden, kann dies zu sehr
+großen Dateien führen.
+
+@item eps
+Erzeugt @q{encapsulated PostScript} (EPS). Jede Seite (oder jedes System) wird
+als eigene @file{EPS}-Datei ausgegeben, inklusive Schriftarten. Außerdem wird
+eine Datei mit allen Seiten (bzw. Systemen) und Schriftarten erzeugt.
+
+Dies ist die Standardeinstellung von @command{lilypond-book}.
+
+@item svg
+SVG-Ausgabe (Scalable Vector Graphics). Jede Seite wird als eigene
+@file{SVG}-Datei ausgegeben, inklusive eingebetteten Schriftarten.
+@cindex SVG (Scalable Vector Graphics)
+Sie benötigen einen SVG-Betrachter, der eingebettete Schriftarten unterstützt,
+oder einen SVG-Betrachter, der eingebettete Schriftarten durch OTF-Schriften
+ersetzen kann. In UNIX und Linux kann z.B. @uref{http://www.inkscape.org,Inkscape}
+(ab Version 0.42) benutzt werden, nachdem die OTF-Schriften aus dem
+LilyPond-Verzeichnis (typischerweise @file{/usr/share/lilypond/VERSION/fonts/otf/})
+in das Verzeichnis @file{~/.fonts/} kopiert wurden.
+
+@item scm
+gibt die rohen Scheme-basierenden Zeichenbefehle aus, wie sie intern von
+LilyPond benutzt werden.
+
+@cindex Scheme dump
+
+@item null
+Keine Partitur wird ausgegeben, hat gleichen Effekt wie @code{-dno-print-pages}.
+
+@end table
+
+Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly}
+
+@cindex Ausgabeformat
+
+@item preview
+Erzeugt eine Ausgabedatei, die nur die Titelzeilen und das erste System
+enthält.
+
+@item print-pages
+Erzeugt vollständige Seiten (Standardeinstellung). @code{-dno-print-pages}
+ist in Verbindung mit @code{-dpreview} nützlich.
+
+@end table
+
+
+
+@item -h,--help
+Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
+
+@item -H,--header=@var{FELD}
+Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei
+@file{Dateiname.@var{FELD}} aus.
+
+@item --include, -I=@var{Verzeichnis}
+Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu.
+@cindex Dateisuche
+@cindex Suchpfad
+
+@item -i,--init=@var{Initialisierungsdatei}
+Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der
+Standardwert ist @file{init.ly}.
+
+@item -o,--output=@var{DATEI}
+Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei
+@var{DATEI}. Die entsprechende Dateinamenserweiterung wird angehängt (z.B.
+@code{.pdf} für pdf).