Benutzerhandbuch

Erich Frühstück

Letzte Änderung: 4. Dez 2011 10:42

Copyright (C) 2001 Erich Frühstück.
This documentation is part of EFEU.

EFEU is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

EFEU is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with EFEU; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.

Dieses Handbuch beschreibt die einzelnen Kommandos von EFEU. Die aktuelle Version enthält alle Kommandos, aber die Beschreibungen sind zum Teil sehr kurz.

Die einzelnen Beschreibungstexte werden von den Kommandos selbst mit der Option --help generiert. Die Syntax ist damit automatisch mit dem Kommando abgestimmt und auf den neuesetem Stand.

Im folgenden sind die wichtigsten Werkzeuge von EFEU überblicksartig aufgelistet:

shmkmf

generiert ein Makefile aus einer Konfigurationsdatei

esh

ist ein Befehlsinterpreter mit einer Syntax ähnlich zu C/C++.

mksource

verwendet den esh Interprerter um C Sourcen zu generieren.

efeudoc

ist eine Dokumentgenerator mit verschiedenen Ausgabeformaten (LaTeX, HTML, roff, ...).

Erich Frühstück
Wördern, Dezember 2011

Inhalt

dircmp(1)

dircmp -- Verzeichnisse vergleichen

ÜBERSICHT

dircmp--help[=type] ] [ --version ] [ -l ] [ -b ] [ -d ] [ -c ] [ -v ] dir1 dir2

BESCHREIBUNG

Das Kommando dircmp vergleicht Dateien in dir1 mit Dateien in dir2. Die Verarbeitung erfolgt rekursiv. Der Vergleich ist nicht symetrisch: Es ist in Ordnung, wenn dir1 weniger Dateien als dir2 enthält.

Die folgenden Optionen und Argumente werden vom Kommando dircmp akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-l

Ausgabe aller abweichenden Bytes (cmp -l)

-b

Weissen Zeichen beim Vergleich ignorieren.

-d

Vergleich mit diff anstelle von cmp

-c

Kontextvergleich mit diff anstelle von cmp

-v

Protokoll der durchgeführten Vergleiche

dir1

1. Verzeichnis

dir2

2. Verzeichnis

BEISPIELE
Die folgenden Befehlszeilen zeigen die Verwendung von dircmp:

mkdir save
cp files save
...
dircmp save .

SIEHE AUCH

cmp(1), diff(1), dircpy(1).

COPYRIGHT

Copyright (C) 2001 Erich Frühstück

dircpy(1)

dircpy -- Verzeichnis kopieren

ÜBERSICHT

dircpy--help[=type] ] [ --version ] src tgfind-options ]

BESCHREIBUNG

Das Kommando dircpy verwendet find und cpio zum Kopieren des Verzeichnisbaumes src nach tg/src. Attribute und Zugriffszeiten werden mitkopiert. Die Zugriffszeiten der Ausgangsdateien bleiben unverändert. Dateien werden nur überschrieben, wenn die zugehörige Ausgangsdatei eine neuere Modifikationszeit aufweist.

SIEHE AUCH

find(1), cpio(1), dircmp(1).

COPYRIGHT

Copyright (C) 2001 Erich Frühstück

efeu-magic(1)

efeu-magic -- Magic-File für efile erneuern

ÜBERSICHT

efeu-magic--help[=type] ] [ --version ] dir

BESCHREIBUNG

Folgende Optionen und Argumente werden vom Kommando efeu-magic akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
dir

Verzeichnis mit Magic-File

SIEHE AUCH
efile(1), file(1), magic(5).

COPYRIGHT

Copyright (C) 2000 Erich Frühstück

efeucc(1)

efeucc -- EFEU spezifische Implementation des C-Kompilers

ÜBERSICHT

efeucc--help[=type] ] [ --version ] [ arg(s) ]

BESCHREIBUNG

Das Kommando efeucc setzt einige default Optionen für def C-Kompiler und erweitert die Suchpfade für Einbindedateien und Bibliotheken entsprechend dem Hauptverzeichnis von EFEU. Die aktuelle Setzung kann direkt dem Kommando /efeucc entnommen werden.

SIEHE AUCH

cc(1).

BEMERKUNGEN

Dieses Kommando wurde mit /home/efeu/www/efeu-3.3-1/src/config/efeu/efeucc.gencmd bei der Installation von EFEU generiert.

efeudoc(1)

efeudoc -- EFEU-Dokumentkonverter

ÜBERSICHT

efeudoc--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -I dir ] [ -T type ] [ -C cfg ] [ -H hdr ] [ -0 ] [ -u ] [ -r name ] [ -d ] [ -t ] [ -l ] [ -p ] [ --pdf ] [ -h ] [ -o aus ] file(s)

BESCHREIBUNG

Das Kommando efeudoc ist ein Dokumentgenerator, der verschiedene Ausgabeformate (LaTeX, HTML, nroff/troff, ...) kennt. Der EFEU-Interpreter (Vergleiche dazu esh(1)) wird in Anweisungen verwendet und erlaubt Datenauswertungen direkt im Dokument.

BESCHREIBUNG

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-I dir

erweitert den Suchpfad für Konfigurationsdateien um dir. Die Vorgabe für den Suchpfad ist:
.

-T type

Ausgabetype, ? liefert eine Auflistung.

-C cfg

Konfigurationsfile

-H hdr

Wertet den String hdr vor den Eingabedateien aus. Damit können Dokumentmakros definiert werden.

-0

Dokumentkopf unterdrücken

-u

UTF8 Kodierung verwenden.

-r name

Generierungsregeln mit Pseudoziel

-d

Abhängigkeitsregeln generieren

-t

Terminalausgabe

-l

LaTeX-Dokument

-p

PostScript-Dokument über LaTeX

--pdf

PDF-Dokument über LaTeX

-h

HTML-Dokument

-o aus

Ausgabefile

file(s)

Eingabedatei(en)

Die Beschreibungssprache ist ein Textformat mit Steueranweisungen, bei dem zusätzlich auch Strukturierungen und Einrückungen berücksichtigt werden. Der Beschreibungstext soll dabei schon ein grobes Bild der gewünschten Formatierung liefern. Am nachstehenden Beispiel der Konstruktion vo Listen wird dies deutlich:

Der Code

Beispiel für eine Aufzählungsliste:
*       Listeneintrag mit einem längeren Absatz zur
        Demonstration der Funktionsweise von
        Einrückungen.

        Ein neuer Absatz mit einer Aufzählung:
        #       Eintrag 1
        #       Eintrag 2
*       Ein weiterer Listeneintrag

Text nach der Aufzählung.

erzeugt die Ausgabe:

Beispiel für eine Aufzählungsliste:

Text nach der Aufzählung.

Zeichensatz

Ein Dokument kann gemischt Zeichen in UTF8 oder ISO 8859-15 enthalten. Die Interpretation von UTF8-Sequenzen ist vorrangig. Gehört ein Byte nicht zu einer UTF8-Sequenz, wird es als Zeichen im Zeichensatz ISO 8859-15 interpretiert.

Intern werden die Zeichen im Unicode gespeichert.

Von den weißen Zeichen wird nur das Leerzeichen, der Tabulator und der Zeilenvorschub interpretiert. Tabulatoren werden automatisch in Leerzeichen expandiert. Tabulatorbreite ist dabei 8 Zeichen. Mehrere aufeinanderfolgende Leerzeichen gelten im Regelfall wie ein einzelnes Leerzeichen. Eine Leerzeile trennt einzelne Absätze.

Einrücktiefe

Leerzeichen und Tabulatoren am Anfang einer Zeile werden nicht ausgegeben, sondern bestimmen die aktuelle Einrücktiefe. Diese dient zur automatischen Verwaltung von listenähnlichen Strukturen. Bei Tabellenzeilen und bei Befehlen mit langen Argumenten dient die Einrückung zur Kennzeichnung von Fortsetzungszeilen.

Kommentare

Eine Beschreibungsdatei kann Kommentare im C++-Stil enthalten. Diese sind etweder durch /* ... */ oder durch // ... Zeilenvorschub begrenzt, wobei der Zeilenvorschub selbst nicht zum Kommentar gerechnet wird.

Beginnt ein Kommentar unmittelbar am Zeilenanfang, wird ein dem Kommentar folgender Zeilenvorschub unterdrückt. Bei der Entfernung eines Kommentars aus dem Eingabestrom kann damit nie eine Leerzeile (Absatztrennung!) entstehen.

Namen

Befehle, Makros und Sonderzeichen werden durch einen Namen gekennzeichnet. Dieser muß mit einem Buchstaben beginnen und darf nur aus Buchstaben und Ziffern bestehen. Ein Unterstreichungssymbol gilt als Buchstabe.

Folgt auf einem Namen ein Leerzeichen oder ein Tabulator, werden alle folgenden Leerzeichen und Tabulatoren entfernt. Folgt auf einen Namen ein Strichpunkt, wird dieser entfernt. Jedes andere Zeichen nach einem Namen bleibt erhalten.

Ligaturen

Dabei handelt es sich um gewisse Buchstabenkombinationen, bei deren Zusammentreffen ein neues Zeichen gebildet, oder einzelne Zeichen anders gesetzt werden. Folgende Ligaturen sind definiert:

Fluchtsymbol
Der Dokumentgenerator kennt eine Reihe von Steuerzeichen. Zu ihrer Ausgabe wird als Fluchtsymbol der Gegenschrägstrich \ verwendet. Dieser dient auch zur Kennung eines Dokumentbefehls. Grundsätzlich gilt: folgt einem Gegenschrägstrich ein alphanumerisches Zeichen oder ein Unterstreichungssymbol, handelt es sich um einen Dokumentbefehl, ansonsten wird das nachfolgende Zeichen wie ein gewöhnliches Zeichen behandelt, unabhängig davon ob es sich um ein Sonderzeichen handelt oder nicht.

Für die Maskierung mit dem Fluchtsymbol gelten folgende Regeln:

Sonderzeichen
Satztechnische Zeichen (z.B: Umbruchstellen) und schwer über die Standardtastatur eingebbare Zeichen werden als Sonderzeichen bezeichnet.

Ein Sonderzeichen wird mit dem Steuerzeichen & eingeleitet, danach folgt der Name des Sonderzeichens oder ein einzelnes, nichtnumerisches Zeichen. Als Namenskonvention werden die in HTML üblichen Namen für Character Entitäten verwendet.

Die nichtnumerischen Zeichen werden für häufig verwendete Sonderzeichen eingesetzt. Ist die entsprechende Zeichenkombination nicht definiert, wirkt & wie ein Fluchtsymbol. Derzeit wird nur &- für das Sonderzeichen ­, das eine Umbruchstelle markiert, verwendet. Die Kombination &; gilt als Leerzeichein und kann z.B. zum Aufbrechen einer Ligatur verwendet werden.

Für das häufig benötigte Leerzeichen ohne Umbrucherlaubnis wird das Steuerzeichen ~ (entspricht  ) verwendet.

Absätze

Die Grundelemente eines Dokumentes sind Absätze. Diese werden voneinander durch Leerzeilen getrennt. Bei Befehlen, die einen neuen Absatz erzwingen, kann die Leerzeile entfallen. Die Zahl der Leerzeilen zwischen einem Absatz ist beliebig.

ANWEISUNGEN

Dieser Abschnitt listet alle vordefinierten Anweisungen von efeudoc auf.

Bezüglich der Argumentdarstellung von Befehlen gilt folgende Konvention:

\addflag
Dokumentflags
\addflag flags
Der Befehl \addflag erweitert die Flags zur Dokumentverarbeitung. Inwieweit einzelne Flags bei der Formatierung berücksichtigt werden, hängt vom jeweiligem Ausgabetreiber ab.
\addsrc

Liste der Programmsourcen um Einzeldatei erweitern

\addsrc name
Der Befehl \addsrc erweitert die Liste der Programmsourcen mit der Datei name.
\addsrclist

Liste der Programmsourcen um Dateien in Bibliothek erweitern

\addsrclist dir
Der Befehl \addsrclist erweitert die Liste der Programmsourcen zur Konstruktion von Handbucheinträgen mit allen Dateien aus der Bibliothek dir. Fehlt die Angabe von dir, wird der Bibliotheksname der aktuellen Eingabedatei genommen.
\appendix

Anhang

\appendix [Kurzform] Bezeichnung
Der Befehl \appendix beginnt einen neuen Anhangteil.
\author

Autorenliste

\author Autorenliste
    ...
Der Befehl \author definiert die Autorenliste für die Titelseite.
\bfitem

Beschreibungsmarke in Fettschrift

\bfitem Marke
Der Befehl \bfitem setzt eine Beschreibungsmarke in Fettschrift.
\bibitem

Eintrag ins Literaturverzeichnis

Der Befehl \bibitem beginnt einen Eintrag ins Literaturverzeichnis

\bibliography

Literaturverzeichnis

Der Befehl \bibliography beginnt das Literaturverzeichnis

\br

Zeilenumbruch

Der Befehl \br bewirkt einen Zeilenumbruch.

\caption

Über- und Unterschriften für Übersichten

\caption [Kurzform] Überschrift
Der Befehl \caption setzt eine Über- bzw. Unterschrift in einer gleitenden Übersicht.
\chap

Kapitel

\chap [Kurzform] Kapiteltitel
    ...
Der Befehl \chap beginnt ein neues Kapitel.
\cite

Abruf eines Literatureintrages

Der Befehl \cite ruft einen Literatureintrag ab.

\cmdinclude

Befehlsscript einbinden

\cmdinclude "name" \cmdinclude <name>
\code

Kodeumgebung

Der Befehl \code wechselt in die Code-Umgebung. Innerhalb dieser Umgebung wird der Text in Schreibmaschine gesetzt.

\config

Konfigurationsfile laden

\config name
Der Befehl \config ladet die Befehle in der Konfigurationsdatei name.
\Copyright

Hauptüberschrift COPYRIGHT

\date

Datum setzen

\date Datum
Der Befehl \date setzt das Datum des Dokuments.
\delsrc

Dateien aus der Liste der Programmsourcen löschen

\delsrc list
Der Befehl \delsrc löscht alle Dateien aus der Liste der Programmsourcen, die der Musterliste list entsprechen. Eine leere Liste löcht alle Einträge.
\Description

Hauptüberschrift BESCHREIBUNG

\Diagnostics

Hauptüberschrift DIAGNOSE

\docfile

Pfadname einer Dokumentdatei suchen

\docfile Name
\docfile {Name}
Der Befehl \docfile sucht nach der Datei name in Bezug auf den aktuellen Dokumentpfad und liefert bei Erfolg den Pfadnamen.
\end

Aktuelle Umgebung beenden

Der Befehl \end schließt die aktuelle Umgebung ab.

\endall

Alle Umgebungen beenden

Der Befehl \endall schließt alle Umgebungen ab.

\endlist

Liste beenden

Der Befehl \endlist schließt die aktuelle Liste ab.

\Environment

Hauptüberschrift UMGEBUNGSVARIABLEN

\Errors

Hauptüberschrift FEHLER

\eval

Ausdruck auswerten

\eval Ausdruck
\eval {Ausdruck}
Der Befehl \eval wertet den nachfolgenden Ausdruck Ausdruck aus und stellt das Ergebnis in die Standardeingabe. Der Ausdruck kann wahlweise als Befehlszeile oder als Block mit geschwungenen Klammern angegeben werden.

Beispiel: \eval{3*5} liefert 15.

\Example

Hauptüberschrift BEISPIEL

\Examples

Hauptüberschrift BEISPIELE

\exercise

Aufgabe

\exercise
Der Makro beginnt eine neue Übungsaufgabe.
\fig

Abbildung

\fig [pos]
Der Befehl \fig beginnt eine gleitende Abbildung.
\Files

Hauptüberschrift DATEIEN

\getsrc

Dateien der Sourceliste einbinden

\getsrc [cmd] list
Das Argument list gibt eine Liste von Selektionsmustern zur Auswahl der Dateien an. Der optionale Parameter cmd bestimmt das Filterprogramm zur Aufbereitung des Datenfiles.
\geval

Ausdruck global auswerten

\geval Ausdruck
\geval {Ausdruck}
Der Befehl \geval arbeitet wie \eval, jedoch werden neue Variablen global angelegt.
\hang

Hängende Absätze

Der Befehl \hang beginnt eine Umgebung mit hängenden Absätzen.

\head

Hauptüberschrift in Handbucheinträgen

\head [Kurzform] Hauptüberschrift
    ...
Der Befehl \head setzt eine Hauptüberschift.
\hmode

Absatz beginnen, Horizontaler Modus

\hmode
Der Befehl \hmode beginnt einen Absatz, falls noch keiner angefangen wurde.
\if

Testblock

\if {expr} ifpart ;[\else elsepart;] \endif
Falls expr wahr ist, wird ifpart ausgegeben, ansonsten elsepart. Das Schlüsselwort \else kann zusammen mit elsepart entfallen. Testblöcke können verschachtelt werden. Kommentare und mit | ... | oder ---- ... ---- geklammerte Textteile werden nicht nach Schlüsselwörtern untersucht.
\include

Datei einbinden

\include [flags] name
Der Befehl \include bindet die Datei file an der aktuellen Position ein. Folgende Steuerflags können angegeben werden:
verbatim

Wortwörtlicher Text ohne Interpretation von Sonderzeichen. Tabulatoren werden durch Leerzeichen ersetzt.

latex

Datei enthält LaTeX-Steuersequenzen

html

Datei enthält HTML-Steuersequenzen

man

Datei enthält nroff-Steuersequnenzen im Handbuchstandard

ignore

Datei wird verarbeitet, aber es erfolgt keine Ausgabe.

eval

Die Datei wird als Befehlsskript ausgewertet.

geval

Die Datei wird als Befehlsskript ausgewertet, wobei neue Variablen global angelegt werden.

\index
Indexeintrag
\index [Eintrag]{Bereich}
Der Befehl \index generiert einen Indexeintrag Eintrag zu einem Textbereich Bereich. Fehlt Eintrag wird Bereich als Indexeintrag verwendet.
\intro

Einführung

Der Befehl \intro beginnt die Einführung

\item

Beschreibungsmarke in Standardschrift

\item Marke
Der Befehl \item setzt eine Beschreibungsmarke in Standardschrift.
\ititem

Beschreibungsmarke in Kursivschrift

\ititem Marke
Der Befehl \ititem setzt eine Beschreibungsmarke in Kursivschrift.
\label

Label

\label {Name}
Der Befehl \label setzt einen Label an der aktuellen Position.
\langpar

Sprachabhängiger Absatz

\langpar
par
Experimentell, könnte geändert werden.
\latex

LaTeX-Befehl

\latex [Alternative] {LaTeX-Code}
\latex [Alternative] LaTeX-Code
Der Befehl \latex erlaubt die direkte Ausgabe von LaTeX-Code an den LaTeX-Treiber. Bei allen anderen Ausgabetreibern wird die Alternative ausgegeben.
\lmark

Literaturmarke

\lmark {name}
Der Befehl \lmark generiert eine Literaturmarke.
\lof

Verzeichnis der Abbildungen

Der Befehl \lof generiert ein Tabellenverzeichnis.

\lot

Verzeichnis der Tabellen

Der Befehl \lot generiert ein Tabellenverzeichnis.

\margin

Randnotiz

\margin [Links] {Randnotiz}
Der Befehl \margin setzt eine Randnotiz. Der optionale Text Links für linke Seiten wird nur bei doppelseitigem Druck verwendet.
\mark

Fußnotenmarke

\mark {num}
Der Befehl \mark generiert eine Fußnotenmarke.
\math

Mathematischer Formelsatz

\math {Formel}
\mchap

Handbuchkapitel

\mchap [Nummer] Kapiteltitel
    ...
Der Befehl \mchap beginnt ein neues Handbuchkapitel.
\mkmf

Makefile generieren und einbinden

\mkmf Imakefile
Der Befehl \mkmf wendet mkmf auf das angegebene Imakefile an und bindet das Makefile wortwörtlich ein.
\mksource

Sourcefile generieren

\mksource Datei
Der Befehl \mksource wendet mksource auf die angegebene Skriptdatei an und bindet die Ergebnisdateien wortwörtlich ein.
\mpage

Handbucheintrag

\mpage [num] name
Der Befehl \mpage beginnt einen neuen Handbucheintrag mit Namen name zum Handbuchkapitel num. Dieser Befehl wird automatisch zu Beginn einer Datei eingefügt, dessen Filezusatz mit einer Ziffer beginnt.
\mref

Referenz auf einen Handbucheintrag.

\mref {arg}
Der Befehl \mref generiert eine Referenz auf einen Handbucheintrag.
\ms_example

Beispiel für mksource ausführen

\ms_example name Beispielskript \\end
Der Befehl \ms_example wendet mksource auf das Beispielskript an und bindet dieses mit allen Ergebnisdateien wortwörtlich ein.
\n

Zeilenvorschub

\n
Der Befehl \n schreibt einen Zeilenvorschub zurück.
\Name

Namensabschnitt einer Handbuchseite mit Hauptüberschrift BEZEICHNUNG

\Name [Kurzform] Titel
    ...
\Name [Kurzform]
Einzeiliger Titel
\newpage

Seitenumbruch

Der Befehl \newpage bewirkt einen Seitenumbruch.

\note

Fußnote

\note [Marke] {Anmerkung}
Der Befehl \note setzt eine Fußnote.
\Notes

Hauptüberschrift BEMERKUNGEN

\package

LaTeX-Pakete

\package[opt] name
Der Befehl \package generiert für LaTeX die Definitionszeile \usepackage[opt]{name}. Damit werden Zusatzpakete geladen.
\par

Absatz beenden, vertikaler Modus

\par
Der Befehl \par beendet einen Absatz.
\para

Paragraph

\para [Kurzform] Paragraph
    ...
Der Befehl \para setzt einen Pargraphen.
\part

Teilabschnitt

\part [Kurzform] Abschnittstitel
    ...
Der Befehl \part beginnt einen neuen Teilabschnitt.
\pipe

Prozesseingabe

\pipe [flags] cmd     ...
Der Befehl \pipe bindet die Ausgabe des Kommandos cmd ein. Die Flags flags sind äquivalent zu \include.
\pop

Befehlstabelle entfernen

Der Befehl \pop entfernt die unterste Tabelle vom Tabellenstack.

\pref

Seitenreferenz

\pref {Name}
Der Befehl \pref referenziert die Seite eines Labels.
\preface

Vorwort

Der Befehl \preface beginnt das Vorwort

\printindex

Stichwortverzeichnis

Der Befehl \printindex generiert das Stichwortverzeichnis.

\printsrclist

Aktuelle Liste der Programmsourcen ausgeben

\printsrclist fmt
Der Befehl \printsrclist gibt die aktuelle Liste der Programmsourcen aus.
\proto

Funktionsprototype

\proto Prototype
Die Funktion \proto dient zur Ausgabe eines Funktionsprototypes der EFEU INterpretersprache
\push

Neue Befehlstabelle

Der Befehl \push generiert eine neue Tabelle für Befehle, Makros und Variablen und legt sie am Tabellenstack ab.

\quote

Einrückung

Der Befehl \quote wechselt in die quote-Umgebung. Innerhalb dieser Umgebung wird der Text eingerückt.

\ref

Referenz

\ref {Name}
Der Befehl \ref referenziert den Wert eines Labels.
\relax

Leerbefehl

Der Befehl \relax bewirkt nichts.

\rem

Kommentar

\rem Kommentar
Der Befehl \rem schreibt einen Kommentar in das Ausgabefile.
\sec

Bereich

\sec [Kurzform] Bereichstitel
    ...
Der Befehl \sec beginnt einen neuen Bereich.
\SeeAlso

Hauptüberschrift SIEHE AUCH

\shead

Nebenüberschrift in Handbucheinträgen

\shead [Kurzform] Nebenüberschrift
    ...
Der Befehl \shead setzt eine Nebenüberschrift.
\spage

Teilseite

\spage [margin] flags
Der Befehl \spage beginnt eine neue Teilseite, veraltet.
\src2doc

Handbucheinträge aus Programmsourcen generieren

\src2doc [flags] Musterliste
Das Argument Musterliste gibt eine Liste von Selektionsmustern an. Der Optionale Parameter flags erlaubt die Übergabe von Optionen an das Kommando src2doc.
\srcinclude

Dateien der Sourceliste einbinden

\srcinclude Musterliste
Das Argument list gibt eine Liste von Selektionsmustern zur Auswahl der Dateien an.
\ssec

Zwischentitel

\ssec [Kurzform] Zwischentitel
    ...
Der Befehl \ssec setzt einen Zwischentitel und beginnt einen neuen Teilbereich.
\style

Dokumentart

\style Stil
Der Befehl \style setzt die Dokumentart.
\Synopsis

Hauptüberschrift ÜBERSICHT

\t

Tabulator

\t
Der Befehl \t schreibt einen Tabulator zurück.
\tab

Tabellensatz

\tab [pos] fmt
Tabellenzeilen
Der Befehl \tab beginnt eine Tabelle mit vertiklarer Ausrichtung pos und Spaltenformartierung fmt. Die Tabellendefinition endet bei der ersten Leerzeile.
\table

Tabelle

\table [pos]
Der Befehl \table beginnt eine gleitende Tabelle.
\thedate

Datum abfragen

\thedate
Der Befehl \thedate ruft das Dokumentdatum ab.
\title

Titel und Untertitel

\title [Kurzform] Titel
Untertitel
Falls das Dokument noch nicht begonnen wurde, setzt der Befehl \title Titel und Untertitel des Dokuments. Ansonsten wird ein neues Kapitel begonnen, wobei die Kurzform für den Eintrag ins Inhaltsverzeichnis verwendet wird.
\toc

Inhaltsverzeichnis

Der Befehl \toc generiert ein Inhaltsverzeichnis.

\ttitem

Listeneintrag in Schreibmaschinenschrift

\ttitem Marke
Der Befehl \ttitem setzt eine Beschreibungsmarke in Schreibmaschinenschrift.
\url

Referenz auf einen Hyperlink.

\url |url| {Bezeichnung}
Der Befehl \url generiert einen Hyperlink.
\vref

Kombinierte Referenz

\vref {Name}
Der Befehl \vref referenziert Wert und Seite eines Labels.
\vspace

Vertikale Verschiebung

\vspace offset
Der Befehl \vspace beendet den laufenden Absatz und generiert eine vertikale Verschiebung um offset Zeilen.
\Warnings

Hauptüberschrift WARNUNGEN

MAKROS
Dieser Abschnitt enthält eine Auflistung aller vordefinierten Makros von efeudoc.

@Copyright

Impressum

@Copyright (Ersheinungsjahr)
Der Makro @Copyright setzt das Impressum für ein EFEU-Handbuch.
@if

Bedingter Ausdruck

@if (expr,ifpart,elsepart)
Falls expr wahr ist, wird ifpart ausgegeben, ansonsten elsepart.
@MSExample

mksource Beispiel einbinden

@MSExample (name,text)
Der Makro bindet ein Beispielskript und sein Ergebnis ein. Dabei ist name der Name des Skripts und text der Trenntext zwischen Skriptfile und den Ergebnisdateien.
@PRM

reference to the Programmer''s Reference Manual

@TODO

Anmerkung für unvollständigen Abschnitt

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

SIEHE AUCH
esh(1).

COPYRIGHT

Copyright (C) 1999 Erich Frühstück

efeuscript(1)

efeuscript -- Installation von Scripts

ÜBERSICHT

efeuscript--help[=type] ] [ --version ] [ -u ] [ -g ] [ -e ] [ -r ] [ -s /expr/repl/ ] [ -c name ] src tg

BESCHREIBUNG

Das Kommando ergänzt das Skript src mit einer Interpreterkennung. Dabei wird der vollständige Pfad des Interpreters automatisch ermittelt.

Falls bereits eine Interpreterkennung vorhanden ist, wird diese nur geprüft und nicht verändert.

Die folgenden Optionen und Argumente werden vom Kommando efeuscript akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-u

Nur Eigentümer erhält Ausführungsrechte

-g

Nur Eigentümer und Gruppe erhalten Ausführungsrechte

-e

/usr/bin/env zum Start des Interpreters verwenden

-r

exec zum Start des Interpreters verwenden

-s /expr/repl/

Verwende sed zum Ersetzen von expr durch repl. Mehrfachangaben sind möglich. Anstelle von / kann auch ein anderes Trennzeichen verwendet werden.

-c name

Name des Befehlsinterpreters, Vorgabe cmd

src

Pfadname des Quellskripts

tg

Pfadname des Zielskripts

COPYRIGHT
Copyright (C) 2001 Erich Frühstück

efile(1)

efile -- file Kommando mit EFEU-Anpassung

ÜBERSICHT

efile--help[=type] ] [ --version ] file(s)

BESCHREIBUNG

efile implementiert das Kommando file mit efeu-spezifischen Erweiterungen. Bei Dateien mit Filezusatz .gz wird der erste Block der Datei entpackt und von file ausgewertet.

Die folgenden Optionen und Argumente werden vom Kommando efile akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
file(s)

Liste der Dateien zur Bestimmung des Dateitypes

SIEHE AUCH
efeu-magic(1), file(1), magic(5).

COPYRIGHT

Copyright (C) 2001, 2008 Erich Frühstück

esh(1)

esh -- EFEU Befehlsinterpreter

ÜBERSICHT

esh--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -I dir ] [ -D name=val ] [ -c string ] [ -E ] [ file ] [ arg(s) ]

BESCHREIBUNG

Das Programm esh interpretiert Skriptfiles in der Syntax des EFEU-Befehlsinterpreters. Die Syntax der Sprache ist ähnlich zu C/C++. Wer damit vertraut ist, sollte keine Schwierigkeiten haben, diese Sprache zu lernen.

Das Kommando esh akzepiert Kommentare im Stil von C/C++ und verwendet einen Präprozessor ähnlich zu C/C++. Dieser wird weiter unten beschrieben. Eine Zeile, die mit #! startet, wird nicht von esh interpretiert. Sie dient primär dazu, den Interpreter für die Ausführung des Skripts zu definieren. Die Interpreterkennung hat die Form

#!vollständiger Pfadname von esh
Damit ein Skript unabhängig vom Installationsort von esh ist, kann auch folgende Interpreterdefinition verwendet werden:
#!/usr/bin/env esh
Ausdrücke im EFEU-Befehlsinterpreter werden entweder durch einen Strichpunkt oder einen Zeilenvorschub beendet. Tabulatoren und Leerzeichen werden überlesen. Ein Ausdruck wird ebenfalls beendet, wenn einem Term kein rechter Operator mehr nachfolgt. Falls in diesem Fall ein Punktierungszeichen dem Term folgt, wird dieses als Abschlußzeichen genommen, ansonsten ein Leerzeichen. An manchen Stellen, z.B. innerhalb einer Argumentliste einer Funktion, wird ein Zeilenvorschub nicht als Abschlußzeichen, sondern nur wie ein gewöhnliches Leerzeichen behandelt.

Im äußersten Modus (außerhalb eines Blocks oder eines Funktionsrumpfes) wird jeder Ausdruck sofort nach dem Lesen ausgewertet. Falls der Ausdruck nicht durch einen Strichpunkt abgeschlossen wurde und ein Ergebnis liefert, wird dieses, gefolgt vom Abschlußzeichen, ausgegeben.

Zum Beispiel wird die Zeile

3 * 5 4 + 7 $ 2 - 1; 4 + 1
in die 4 Ausdrücke
3 * 5 mit einem Leerzeichen als Abschluß,
4 + 7 mit einem $ als Abschlußzeichen,
2 - 1 mit einem ; als Abschlußzeichen und
4 + 1 mit einem Zeilenvorschub als Abschluß
aufgespalten und die Ausgabe ist
15 11$5
im äußersten Modus.

Falls esh ohne Skriptnamen aufgerufen wird, oder falls anstelle des Skriptnamens ein einzelnes Minus steht, werden die Befehlszeilen von der Standardeingabe gelesen. Falls die Standardeingabe und die Standardausgabe mit einem Terminal verbunden sind, läuft esh interaktiv und readline wird für die Eingabe vom Terminal verwendet. Die Steuerzeichen von readline sind aktiv und ein Rufzeichen ! zu Beginn einer Zeile erlaubt die Eingabe von History-Befehlen und Systemaufrufen.

Die Verwendung von readline im interaktiven Modus und die automatische Ausgabe von Resultaten machen esh zu einem komfortablen Tischrechner.

Der EFEU-Befehlsinterpreter ist mit C-Bibliotheksfunktionen implementiert, esh ist ein einfaches Programm, das diese Funktionen nutzt. Der Interpreter kann Datenpointer gemeinsam mit C-Funktionen nutzen und mit eigenen Funktionen und Datentypen erweitert werden. Er eignet sich zur Verarbeitung von Konfigurationsdateien und zum Testen von Funktionen.

Falls EFEU für gemeinsam genutzte Bibliotheken kompiliert wurde, kann esh zur Laufzeit erweitert werden. Falls ein dynamisches Linken von Funktionen nicht möglich ist, können die Erweiterungen in einer Kopie von esh.c eingebaut werden.

Optionen

Optionen und Argumente nach dem Skriptnamen werden vom Skript selbst interpretiert. Der Interpreter esh selbst akzeptiert die folgenden Optionen und Argumente:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-I dir

erweitert den Suchpfad für Skriptfiles um dir. Die Vorgabe für den Suchpfad ist:
"/home/efeu/www/efeu-3.3-1/lib/esh/%S:/home/efeu/www/efeu-3.3-1/lib/esh:/usr/local/lib/esh/%S:/usr/local/lib/esh:/usr/lib/esh/%S:/usr/lib/esh:/lib/esh/%S:/lib/esh".

-D name=val

definiert den Makro name mit Wert value

-c string

liest Befehle vom String string.

file

ist der Name des Skriptfiles.

arg(s)

sind die Skriptparameter.

-E

es wird nur der Präprozessor verwendet, das Skriptfile wird nicht verarbeitet.

PRÄPROZESSOR
Der verwendete Präprozessor hat eine ähnliche Syntax wie der C-Präprozessor. Es gibt jedoch einen wesentlichen Unterschied: Der Präprozessor wird nicht zur Vorverarbeitung der gesamten Datei verwendet, sondern ist zeilenweise implementiert und arbeitet direkt mit dem Befehlsinterpreter zusammen. Insbesonders kann durch Verändern von Variablen im äußeren Modus auch die Verarbeitung nachfolgender Präprozessorzeilen beeinflußt werden.

Eine Direktive (Präprozessoranweisung) wird mit einem Gittersymbol # eingeleitet. Danach folgt der Name der Direktive und die zugehörigen Argumente.

Eine Präprozessorzeile, bei der nach dem Startzeichen (#) ein Sonderzeichen folgt, wird ignoriert. Insbesonders gilt das für die Interpreterkennung #!.

Einbinden von Dateien

Dateien werden mit der #include Direktive eingebunden. Zunächst werden im Argument der Direktive alle Makros expandiert. Anschließend bleiben drei mögliche Fälle:

#include <file>

Die Suche nach der Datei file erfolgt in den durch die Variable IncPath (Kann mit der Umgebungsvariablen ESHPATH und der Option -I erweitert werden) definierten Verzeichnissen.

#include expr
Zunächst wird expr ausgewertet und in einen String konvertiert. Falls der resultierende String nicht mit < beginnt, wird die Datei zunächst im aktuellen Verzeichnis gesucht und erst anschließend in den durch IncPath definierten Verzeichnis.
#include "file"
Das ist nur ein Spezialfall der zweiten Variante. Die Datei name wird zuerst im aktuellen Verzeichnis gesucht.
In esh ist die folgende Konstruktion erlaubt:
str header = paste("/", "SubDir", "MyHeader");
#include "<" + header + ">"

Bedingte Verarbeitung

Eine bedingte Verarbeitung beginnt mit einer der Direktiven #if, #ifdef oder #ifndef und endet mit #endif. Innerhalb der bedingten Verarbeitung können beliebig viele #elif Anweisungen und eine #else Anweisung enthalten sein. Bereiche mit bedingter Verarbeitung können beliebig geschachtelt werden.

Die Direktiven

#ifdef name
#ifndef name
dienen zum Testen, ob der Makro mit Namen name definiert (bzw. nicht definiert) ist. Auf diese Direktiven wird keine Makrosubstitution angewendet.

Die einfachste Form eines bedingten Ausdrucks hat die Form:

#if expr
Zeilen werden verarbeitet, falls expr wahr ist.
#endif

Ein etwas komplexerer Ausdruck könnte etwa so aussehen:

#if expr1
Zeilen werden verarbeitet, falls expr1 wahr ist.
#elif expr2
Zeilen werden verarbeitet, falls expr2 wahr und expr1 falsch ist.
#else
Zeilen werden verarbeitet, falls weder expr1 noch expr2 wahr ist.
#endif

Wie bereits im Abschnitt »Einbinden von Dateien« erwähnt, können in expr beliebige Variablen oder Funktionen, die vor der bedingten Verarbeitung erklärt wurden, verwendet werden.

Makros

Makros werden mit der #define Direktive definiert. Es gibt zwei Formen:

#define name repl

definiert einen Makro name der durch repl ersetzt wird.

#define name(arglist) repl
definiert einen Makro name mit Argumenten. Die öffnende Klammer muß unmittelbar nach dem Namen folgen.
Der Name eines Makros muß mit einem Buchstaben oder einem Unterstreichungszeichen beginnen und darf nur Buchstaben, Ziffern oder Unterstreichungszeichen enthalten.

In esh werden Makros nur selten verwendet. In fast allen Fällen sind Variablen und Funktionen die bessere Lösung. Normalerweise werden Makros nur zum Absichern von Headerdateien gegen mehrfache Einbindung verwendet.

Ein Makrodefinition kann mit der #undef Direktive gelöscht werden.

VARIABLEN UND KONSTANTEN

Im Gegensatz zu anderen Interpretersprachen müssen in esh Variablen wie in C/C++ vor ihrer Verwendung deklariert werden. Die Deklaration kann an beliebiger Stelle (mit Berücksichtigung der aktuellen Hierarchie der Variablentabellen) im Skript erfolgen. Eine Deklaration liefert als Rückgabewert den Initialisierungswert der deklarierten Variablen.

Zum Beispiel deklariert

int x;
double a, b;
x = (int y = 5);
zunächst die Ganzzahlvariable x und die Gleitkommavariablen a und b. Anschließend wird die Gaanzzahlvariable y mit dem Initialisierungswert 5 eingerichtet und der Rückgabewert (der Wert 5) der Variablen x zugewiesen.

Variablen werden in einer Hierarchie von Variablentabellen gespeichert. An oberster Stelle steht die globale Variablentabelle, an unterster Stelle die lokale oder aktuelle Variablentabelle. Neue Variablen werden in der lokalen Variablentabelle generiert. Die Suche von Variablen erfolgt von unten nach oben. Im äußersten Verarbeitungsmodus stimmt die lokale Variablentabelle mit der globalen Variablentabelle überein.

Zu jedem vordefinierten Datentyp im EFEU-Interpreter gibt es einen zugehörigen Datentyp in C. Der Interpreter kennt keine Pointer, aber manche Datentypen werden durch Pointer auf C-Datentypen repräsentiert.

Der Interpreter unterscheidet zwischen L-Werten und Konstanten. Ein L-Wert ist alles, was auf der linken Seite einer Zuweisung stehen darf. Typische L-Werte sind Variablen. Das Resultat eines Terms oder eines Funktionsaufrufes kann ein L-Wert sein.

Ganzzahltypen

Wie in C/C++ gibt es eine Reihe von Ganzzahldatentypen. Die folgende Tabelle listet die Ganzzahltypen und ihre Äquivalente in C auf.
esh Type C Type
bool int
int8_t int8_t
int16_t int16_t
int int
int32_t int32_t
int64_t int64_t
varint int64_t
uint8_t uint8_t
uint16_t uint16_t
unsigned unsigned int
uint32_t uint32_t
uint64_t uint64_t
varsize uint64_t

Das Schlüsselwort unsigned ist ein Datentypnamen und keine Typqualifikation wie in C. Die Datentypen varint und varsize unterscheiden sich von int64_t und uint64_t durch eine kompakte, wertabhängige Darstellung in Binärdateien.

Die Syntax von Ganzzahlkonstanten ist wie in C/C++. Die Schlüsselworter true (Ganzzahlwert 0) und false (Ganzzahlwert 1) sind vom Typ bool.

Gleitkommatypen

Der EFEU-Befehlsinterpreter verwendet die Gleitkommatypen float und double wie in C/C++. Alle Gleitkommakonstanten sind vom Type double. Die gesamte Arithmetik wird mit double durchgeführt, float wurde nur aus Gründen der Vollständigkeit und für große Datenfelder, wo die Genauigkeit der Werte nicht so wichtig ist, eingerichtet.

Zeichen und Zeichenketten

Ein Zeichen in esh ist vom Type char und sein Kodewert wird als vorzeichenlos interpretiert (Wertebereich 0 ... 255). Weiters steht zur Speicherung von Unicodezeichen der Datentyp wchar_t zur verfügung. Der zugehörige C-Datentyp ist int32_t und nicht wchar_t.

Zeichenketten (Strings) werden in esh völlig anders als in C implementiert. Sie werden nicht als Felder vom Type char eingerichtet, sondern haben den Datentyp str, der über einen char Pointer eingerichtet wird. Falls einem String ein Wert zugeordnet wird, wird die gesamte Zeichenkette und nicht die Adresse kopiert. Stringkopien erfolgen immer mit dynamischer Speicherzuweisung und es gibt eine Speicherbereinigung (Garbage-Collection) für Strings und generell für alle Objekte mit dynamisch zugewiesenem Speicherbereich.

Zeichenkonstanten werden von einfachen, Stringkonstanten von doppelten Hochkommas begrenzt. Der Gegenschrägstrich wird wie in C als Fluchtsymbol verwendet.

Für lange Stringkonstanten gibt es das Schlüsselwort string, welches in der folgenden Form verwendet wird:

string !
Inhalt des Strings
!

Unmittelbar nach ! muß ein Zeilenvorschub stehen und ! muss das erste Zeichen der letzten Zeile sein. Eine so definierte Zeichenkonstante enthält immer einen Zeilenvorschub am Ende. Der Gegenschrägstrich wird nur mehr zum Schutz eines ! am Anfang einer Zeile verwendet. Diese Konstruktion kann an beliebiger Stelle innerhalb eines Ausdrucks stehen.

Innerhalb solcher Stringdefinitionen werden Kommentare im C/C++-Style überlesen und Präprozessor-Direktiven interpretiert.

So kann zum Beispiel mit

str s = string !
#include "file"
!;

der Inhalt der Datei file in den String s geladen werden. Aber Achtung: Die Datei file wird vom Präprozessor überarbeitet.

Anmerkung: In EFEU (und damit auch in esh) können Nullstrings (Zeichenpointer auf NULL) wie gewöhnliche Strings verwendet werden. Nullstrings werden jedoch anders als Leerstrings (Zeichenketten, die nur aus der Abschlußnull bestehen) behandelt. Die EFEU-Bibliotheken beinhalten eine Reihe von Hilfsfunktionen zur Handhabung von Zeichenketten mit dynamisch zugewiesenem Speicher. Auch können sie mit Stringkonstanten gemischt werden. Die Speicherverwaltungsfunktionen von EFEU wissen, ob der Speicher eines Strings freigegeben werden kann.

Pointertypen

Datentypen, die über Pointer implementiert werden, kopieren bei einer Zuweisung nur die Adresse und nicht die Daten (Zeichenketten sind eine Ausnahme). Aber sie benutzen einen Referenzzähler für die Speicherbereinigung, der beim Kopieren erhöht wird. Alle diese Datentypen sind von der Basisklasse _Ref_ abgeleitet.

Der Datentyp _Ref_ und alle anderen Datentypen mit Pointerrepräsentation (wie str) sind wiederum vom Datentyp _Ptr_ abgeleitet, dieser ist auch der Typ der Konstanten NULL.

Datentypen mit einem Unterstreichungszeichen am Anfang und Ende des Namens sind für die interne Verwendung reserviert. Normalerweise werden keine Variablen dieser Typen deklariert. Aber sie können in Argumentlisten von virtuellen Funktionen auftreten, etwa um zwischen der Konstanten NULL (vom Type _Ptr_) und einer Zeichenkette, die mit NULL initialisiert wurde, zu unterscheiden.

Listen

Listen sind geordnete Mengen von Objekten beliebiger Datentypen. Sie haben den Type List_t. Es gibt drei Methoden, um Listen zu erzeugen:

  1. Mit dem Gruppierungsoperator: { 3, 5 }. Er kann nicht zu Beginn eines Ausdrucks verwendet werden, da { ... } auch für Blöcke verwendet wird.
  2. Mit dem Listenoperator: 3, 5. Beachte die niedrige Priorität des Operators. In Termen muß er geklammert werden. Es können nur Listen mit mindestens zwei Elementen erzeugt werden.
  3. Mit dem Bereichsoperator: 3 : 5 : 2. Alle Mitglieder haben den gleichen Datentyp.
Jedes Objekt vom Type List_t hat die folgenden Komponenten:
obj

liefert den ersten Eintrag der Liste oder NULL bei leeren Listen.

next

liefert die Teilliste, die beim zweiten Element startet oder eine leere Liste, falls keine Elemente mehr existieren.

Datenfelder
Datenfelder können auf zwei Arten deklariert werden:

type name[dim]

deklariert name als Datenfeld vom Type type.

type[dim] name

deklariert name als Skalar vom Type type[dim].

Im ersten Fall, und falls das Datenfeld mit einer Liste von Werten initialisiert wird, kann dim entfallen und die Größe des Datenfeldes wird durch die Zahl der Elemente der Liste bestimmt. Im zweiten Fall wird implizit ein neuer Datentyp eingerichtet. Falls hier keine Größe oder 0 angegeben wird, handelt es sich um einen Vektor variabler Länge. Die Größe wird dynamisch angepaßt.

Falls mehr als eine Dimension benötigt wird, wird eine Deklaration der Form:

type name[n0][n1]...[nk];
in
type[nk]...[n1] name[n0];
konvertiert, da Datenfelder nur eindimensional sein können, aber es keine Beschränkungen bei der Konstruktion von Vektordatentypen gibt. Es ist klar, dass nur n0 weggelassen werden kann.

Datenfelder werden bei der Verwendung immer in ein Objekt vom Typ EfiVec gepackt. Ein Datenfeld kann in eine Liste konvertiert werden und die Werte eines Datenfeldes können durch Zuweisung einer Liste verändert werden. Falls eine Liste weniger Elemente enthält, als das Datenfeld auf der linken Seite, werden nur die zugehörigen Elemente verändert.

Neben den gewöhnlichen Datenfeldern stehen in EFEU noch die folgenden Datentypen für ein mächtigeres Hantieren mit Daten zur Verfügung:

EDB

ist eine Datenschnittstelle zur Manipulation großer Datenmengen.

TimeSeries

sind dynamische Datenfelder vom Type double mit einem Zeitindex.

mdmat

verwaltet einen Datenwürfel beliebigen Typs und beliebiger Zahl an Dimensionen. Seine Größe wird nur durch den verfügbaren Speicher begrenzt. EFEU enthält eine Reihe von Hilfswerkzeugen zur Manipulation solcher Datenwürfel.

Abgeleitete Datentypen
Der einfachste Weg um einen neuen Datentyp einzurichten, ist typedef, z.B:

typedef int myint;
Der neue Datentyp myint wird von int als Basisklasse abgeleitet (Vererbung). Damit kann myint wie int verwendet werden, ist aber nicht nur ein anderer Namen für int wie in C.

Strukturen werden mit der struct Anweisung erzeugt. Die Syntax ist

struct type [: base [ name ]] { Deklarationen }
analog zu C++. Fals base definiert ist, wird type von base abgeleitet. Nur ein Basistype kann angegeben werden. Der EFEU-Interpreter kennt keine Mehrfachvererbung.

Die folgenden zwei Datentypen

struct T1 {
        int a;
        int b;
}

struct T2 : int a {
        int b;
}

haben gleiche Komponenten, aber nur T2 kann stellvertretend für ein int verwendet werden.

Jeder zuvor definierte Datentyp kann bei der Definition einer Datenstruktur verwendet werden. Es gibt aber keine Vorwärtsdeklaration.

Jedes Objekt mit einem Strukturdatentyp kann in eine Liste umgewandelt werden und jede Liste läßt sich in ein Strukturobjekt konvertieren.

Beispiel für eine etwas komplexere Struktur:

struct MyDataType {
        int i;
        double d;
        str s;
        int v[10];
};

Datentypen müssen nicht benannt werden. Eine Variable kann z.B. auch mit einer namenlosen Struktur eingerichtet werden:

struct {
        int i;
        double d;
} data;

Falls eine gleichwertige, benannte Struktur existiert, wird diese Stellvertretend eingesetzt. Sollten mehr als zwei gleichwertige Strukturen existieren, ist undefiniert, welche zum Zug kommt. Zwei Strukturen sind gleichwertig, wenn alle Komponenten gleichen Namen und Datentyp haben.

Der EFEU Interpreter unterstützt Aufzählungstypen. Die Syntax ist:

enum type [: base [ name ]] { Kennungsliste }
mit einer durch Komma getrennten Liste von Kennungen mit optionalen Zuweisungswert. Die Kennungen werden an den Aufzählungstype gebunden. Sie können unmittelbar nach ihrer Deklaration (also bereits für die nächste Kennung innerhalb der Aufzählungsdeklaration) verwendet werden.

Die folgende Anweisung:

enum Color { Red, Green = 5, Blue };
erzeugt einen Aufzählungstype mit Namen Color und den Kennungen Color::Red, Color::Green und Color::Blue. Die zugehörigen Ganzzahlwerte sind 0, 5 und 6. Für jeden Aufzählungstype werden Konverter von/nach int/str eingerichtet. Daher sind die folgenden Zuweisungen alle gültig:
Color c1 = "Red";
Color c2 = 0;
str s = Color::Red;
int n = Color::Red;

Die Funktion enumlist(Typ) liefert eine Liste aller Kennungen des Aufzählungstypes Typ oder eine leere Liste, falls Typ keine Kennungen hat oder kein Aufzählungstype ist. Vergleiche dazu auch den Abschnitt KLASSIFIKATIONEN weiter unten.

Konstruktion von Datentypen mit Ausdrücken

Datentypen können auch über eine Konstruktionsfunktion eingerichtet werden. Das Grundprinzip ist einfach: Eine Datenstruktur wird über eine Liste von Ausdrücken definiert. Der Datentyp (und teilweise auch der Variablenname) kann implizit aus dem Ausdruck abgeleitet werden. Ein so abgeleiteter Datentyp ist unbenannt (außer es existiert eine benannte, gleichwertige Datenstruktur).

Die Möglichkeiten dieser Datentypkonstruktionen werden am besten an einem Beispiel demonstriert:

Der folgende Code

construct DATA : int a, double b {
        str date = today();
        a;
        data = {
                double x = 3 * a;
                y = 2 * b;
        };
}

generiert die Datenstruktur

struct DATA {
        str date;
        int a;
        struct {
                double x;
                double y;
        } data;
}

und die Konstruktionsfunktionen

virtual DATA DATA (List_t)
virtual DATA DATA (int a, double b)

Die Variante mit der Liste als Argument wird für jede Struktur eingerichtet. Die spezifisch mit construct eingerichtete Version hat die Parameter int a, double b, wie sie in der ersten Datenzeile angegeben wurde.

Der Aufruf DATA(2, 3.5) generiert ein Objekt vom Typ DATA mit den folgenden Werten:

{"2011-12-04", 2, {6.00000, 7.00000}}

Die allgemeine Syntax ist:

construct Typ [ : varlist ] {
vardef;
...
}
wobei vardef entweder eine einfache Variable in der Form
[[type] name ] [ = expr ];
oder eine Teilstruktur mit Syntax
name = {
[[type] name ] [ = expr ];
...
}
ist. Der Datentyp type ist optional und wird aus dem Wert von expr bestimmt. Falls expr eine Strukturkomponente ist, kann auch der Name name entfallen. Umgekehrt kann bei bekannten Datentyp und Variablennamen der Ausdruck expr entfallen.

Die Variablenliste varlist kann auch leer sein. In diesem Fall können bei expr nur globale Variablen genutzt werden.

Diese Form der Datentypkonstruktion wird implizit bei der Aufbereitung und Unmformung von EDB-Datenfiles genutzt.

AUSDRÜCKE

Konstanten und Variablen können mit Operatoren zu einfachen Ausdrücken verknüpft werden.

Die nachfolgenden Tabellen zeigen die verfügbaren Operatoren von esh, sie sind absteigend nach ihrer Priorität aufgelistet. Operatoren, die nicht durch eine horizontale Linie voneinander getrennt sind, haben die gleiche Priorität.
Linke Operatoren
:: global ::name
++ pre increment ++lvalue
-- pre decrement --lvalue
~ complement ~expr
! not !expr
- unary minus -expr
+ unary plus +expr
{ list grouping { expr [, expr ] }
( grouping ( expr )
[ expression [ expr ]
() cast (type conversion) (type) expr
() lvalue cast (type &) expr

Der »list grouping« Operator generiert eine Liste von Werten. Im Genensatz zu C/C++ ist dieser Operator nicht auf die Initialisierung von Variablen in Deklarationen beschränkt.

Der »expression« Operator liefert einen Ausdruck ohne ihn auszuwerten. Er kann einer Variablen zugewiesen oder einer Funktion für eine spätere Auswertung übergeben werden.

Ein Datentyp, der von runden Klammern eingeschlossen ist, bildet einen Cast-Operator, der eine Umwandlung des nachfolgenden Terms auf den gewünschten Datentyp erzwingt.

Der EFEU-Interpreter erlaubt auch casts von L-Werten. Diese sind für alle Datentypen zulässig, für die es wechselseitige Konvertierungen gibt.

Beispiel: Durch die Anweisungen

str s = "5";
(int &) s++;
wird die Zeichenkette s auf "6" gesetzt.
Rechte Operatoren
++ post increment lvalue++
-- post decrement lvalue--
:: scope resolution type::name
:: variable selection vartab::name
. member selection expr.name
[] subscripting expr[expr]
() function call expr(list)

In esh kann auf die Variablentabellen direkt zugegriffen werden und es können eigene Variablentabellen generiert werden. Mithilfe des »scope resolution« Operators kann auf ein Element der Tabelle zugegriffen werden. Dieser Operator kann auf jeden Datentyp angewendet werden, der sich in eine Variablentabelle (Type VarTab) konvertieren läßt.
Arithmetische Operatoren
* multiply expr * expr
/ division expr / expr
% modulo (remainder) expr % expr
+ add (plus) expr + expr
- subtract expr - expr
<< shift left expr << expr
>> shift right expr >> expr
Vergleichsoperatoren
< less than expr < expr
<= less than or equal expr <= expr
> greater than expr > expr
>= greater than or equal expr >= expr
== equal expr == expr
!= not equal expr != expr
Bitoperatoren
& bitwise AND expr & expr
^ bitwise exclusive OR expr ^ expr
| bitwise inclusive OR expr | expr
Logische Operatoren
&& logical AND expr && expr
|| logical OR expr || expr

Der rechte Operand eines logischen Operators wird nur ausgewertet, wenn das Resultat nicht bereits vom linken Operanden determiniert wird. So wird in

false && expr
true || expr
der rechte Operand expr niemals ausgewertet.
Bedingter Ausdruck und Bereichsoperator
? : conditional operator cond ? expr1 : expr2
: : range operator start : end [ : step ]

Der Bereichsoperator liefert eine Liste von Werten, beginnend bei start bis einschließlich end. Je nachdem, ob start kleiner oder größer als end ist, werden die einzelnen Elemente um step erhöht bzw. verkleinert. Für step dürfen nur positive Werte angegeben werden, die Vorgabe ist 1. Der Operator kann überladen werden. Eine falsche Verwendung kann in einer Endlosschleife enden. Es gibt keinen Bereichsoperator in C/C++.
Zuweisungsoperatoren
= simple assignment lvalue = expr
*= multiply and assign lvalue *= expr
/= divide and assign lvalue /= expr
%= modulo and assign lvalue %= expr
+= add and assign lvalue += expr
-= subtract and assign lvalue -= expr
<<= shift left and assign lvalue <<= expr
>>= shift right and assign lvalue >>= expr
&= AND and assign lvalue &= expr
^= exclusive OR and assign lvalue ^= expr
|= inclusive OR and assign lvalue |= expr

Zuweisungsoperatoren sind rechtsassoziativ.
Listentrenner
, list separator expr , expr

Das Komma , wird von esh so wie von python als Listentrenner und nicht als Komma-Operator wie in C/C++ verwendet. Der Ausdruck a, b, ..., n liefert eine Liste mit den Elementen a, b, ..., n.

Falls der Rückgabewert nicht verwendet wird (die übliche Anwendung), gibt es keinen Unterschied im Verhalten vom Komma-Operator und Listentrenner.

Schleifen

while (cond) cmd

Definiert eine Schleife. Der Ausdruck cmd wird solange ausgeführt, wie cond logisch wahr ist. Bei cmd handelt es sich entweder um eine einfache Befehlszeile oder einen Block.

do cmd while (cond)
Bei der zweiten Form wird cmd zumindest einmal ausgeführt.
for (a; cond; b) cmd
Zu Beginn der Verarbeitung wird a ausgeführt. Der Ausdruck cmd wird solange ausgeführt, wie cond wahr ist. Nach jedem Schleifendurchlauf wird b ausgeführt.
for (name in list) cmd
Für jedes Element der Liste list wird cmd ausgeführt. Name ist der Name einer temporäre Variablen, die das aktuelle Element der Liste enthält. Anstelle von list kann auch ein einzelnes Objekt stehen, das in eine Liste konvertierbar ist (z.B: ein Datenfeld).
Bei Schleifen kann ein Block vorzeitig mit der break Anweisung verlassen werden. Die continue Anweisung startet einen neuen Zyklus.

Bedingungen

if (cond) cmd1

Falls die Bedingung cond wahr ist, wird cmd1 ausgeführt.

if (cond) cmd1 else cmd2

Falls die Bedingung cond wahr ist, wird cmd1 ausgeführt, ansonsten wird cmd2 ausgeführt.

Switch-Anweisung
Die Syntax der Switch-Anweisung lautet:

switch (expr)
{
label:
        cmdlist
label:
        cmdlist
...
}

wobei label wahlweise case val oder default sein kann. Der Ausdruck val wird dabei bereits beim Einlesen der Anweisung ausgewertet. Der Wert von expr wird mit den einzelnen Werten der Labels in der Reihenfolge des Auftretens verglichen. Falls der Vergleich wahr liefert, werden alle nachfolgenden Anweisungen bis zum Erreichen eines der Anweisungen break, continue, return oder dem Ende des Switch-Blocks ausgeführt. Falls keiner der Labels mit expr übereinstimmt, werden die Anweisungen nach default (falls vorhanden) ausgeführt.

Im Gegensatz zu C kann jeder Datentyp, für den der Vergleichsoperator == definiert ist, für Switch-Anweisungen verwendet werden. Insbesonders können Zeichenketten und reguläre Ausdrücke in Switch-Anweisungen verwendet werden.

Blockbildung

Mithilfe von geschwungenen Klammern lassen sich einzelne Ausdrücke zu einem Block zusammenfassen. Bei der Ausführung eines Blocks werden zwei zusätzliche Variablentabellen aktiviert. Die weniger sichtbare wird bereits beim Lesen der Befehlszeilen, die zweite bei der Ausführung (und bei einer Schleife jedesmal neu) eingerichtet. Jeder Ausdruck nach dem Schlüsselwort static wird bereits beim Lesen der Befehlszeilen ausgewertet. Damit können Variablen in der inneren (oder statischen) Variablentabelle eingerichtet werden. Die Verwendung von static ist aber nicht auf Variablendeklarationen beschränkt.

FUNKTIONEN

Eine Funktionsdefinition in esh hat die allgemeine Form

type name ( arglist )
        expr
Normalerweise ist expr ein Block von Ausdrücken, in esh kann aber auch ein einzelner (nicht leerer) Ausdruck stehen. Falls die Funktion keinen Wert zurückliefern soll, ist als Datentyp void zu verwenden.

Die folgenden Funktionsdefinitionen sind gleichwertig:

int f (int x) x + 1;
int f (int x) return x + 1;
inline int f (int x) { return x + 1; }

Im EFEU-Befehlsinterpreter hat das Schlüsselwort inline primär etwas mit Sichtbarkeit zu tun. Eine inline Funktion sieht alle Variablentabellen, die auch in der Zeile mit dem Funktionsaufruf sichtbar waren. Alle Funktionen, die nur aus einem einzelnen Ausdruck bestehen, gelten als inline Funktionen.

Das folgende Beispiel zeigt einen Anwendungsfall für das Schlüsselwort inline:

inline str f (str fmt)
{
        return psub(fmt);
}

{
        str x = "foo";
        f("x = $(x)");
}

Die Funktion psub substituiert Parameter entsprechend einem Formatstring. Falls f nicht inline ist, ist die Variable x für psub unsichtbar und die Substitution $(x) schlägt fehl.

Der Overhead für den Aufruf einer inline-Funktion ist geringer als der einer normale Funktion, allerdings kann es zu Seiteneffekten bezüglich der Sichtbarkeit von Variablen kommen.

Funktionen haben den Datentyp Func und jede Funktion kann auch als Variable (Funktionsname ohne Argumentliste) angesprochen werden. Die Standarddarstellung einer Funktion (z.B: Eingabe des Funktionsnamens im äußersten Modus) ist der Prototype der Funktion.

Wie in C++ können Funktionsargumente Vorgabewerte besitzen. Diese müssen dann beim Aufruf nicht angegeben werden. Die allgemeine Form eines Funktionsarguments ist:

type [ & ] name [ = value ]
Das & zeigt an, dass das Argument ein gültiger L-Wert sein muss. Eine Tilde ... anstelle des Funktionsarguments steht für eine variable Argumentliste. Auf sie kann innerhalb der Funktion unter dem Namen va_list zugegriffen werden.

Virtuelle Funktionen

Wie in C++ können Funktionen mit verschiedenen Argumentlisten überladen werden. Überladene Funktionen werden mit dem Schlüsselwort virtual deklariert. Der Datentyp solcher Funktionen ist VirFunc. Jede Funktion kann in eine virtuelle Funktion konvertiert werden.

Eine virtuelle Funktion kann auch in eine gewöhnliche Funktion umgewandelt werden. Dies erfolgt mit einem Prototyp-Cast wie im folgendem Beispiel:

Func f = operator+ (int a, int b);;

Nun kann f zur Addition von zwei Ganzzahlwerten verwendet werden. Beachte die zwei Strichpunkte am Ende der Zuweisung: Der erste gehört zum Prototyp (und unterscheidet ihn von einer Funktionsdefinition), der zweite schließt den Ausdruck ab.

Typgebundene Funktionen

Funktionen können auch an einen Datentyp gebunden werden. Sie haben die allgemeine Form:

type btype::name [ & ] ( arglist )
        expr

Falls nach dem Funktionsnamen ein & steht, kann die Funktion nur für L-Werte verwendet werden. Eine gebundene Funktion wird folgend aufgerufen:

obj.name(args)

Dabei ist obj ein Objekt vom Type btype. Der Datentyp einer typgebundenen Funktion ist ObjFunc. Dabei kann es sich sowohl um eine virtuelle, als auch um eine gewöhnliche Funktion handeln.

In gebundenen Funktionen kann mit dem Schlüsselwort this auf das zugehörige Datenobjekt zugegriffen werden.

Operatoren

Operatoren werden intern wie Funktionen behandelt. Mit dem Schlüsselwort operator kann ein Operatorname direkt angesprochen werden. Folgende Schreibweisen sind zulässig:

operator op
operator "op"

Bei der ersten Schreibweise muß nach op ein Leerzeichen folgen, vor op kann ein Leerzeichen stehen.

Damit linke Operatoren von rechten unterscheidbar sind, werden sie intern mit dem Zusatz () versehen (z.B: -() für die Negation. Dies ist bei der Definition von Funktionen zu beachten.

Folgende Terme sind gleichwertig:

a + b
operator+ (a, b)

Operatoren sind in der Regel virtuelle Funktionen. Alle Zuweisungsoperatoren sind gebundene, virtuelle Funktionen.

Spezielle Funktionen

Funktionen, die den gleichen Namen wie ein zuvor definierter Datentyp haben, definieren Konstruktoren und Konverter. Konverter werden meist indirekt bei Zuweisungen, der Wertübergabe bei Funktionsaufrufen oder durch explizite Typumwandlungen (casts) aufgerufen.

Konstruktoren haben die Form

virtual type type ( arglist )
Die spezielle Form
type type ()
wird Copy-Konstruktor genannt. Ist er definiert, wird er jedesmal beim Kopieren eines Datenelementes aufgerufen.

Im Gegensatz dazu ist

type type (void)
ein gewöhnlicher Konstruktor ohne Argumente.

Konverter haben die Form

tg_type src_type ()
mit einer leeren Argumentliste.

Die Ausgangsdaten werden unter dem Namen this referiert. Falls der Zieldatentype void ist, definiert die Funktion den Destruktor für den Datentyp, der jedesmal aufgerufen wird, wenn ein Objekt diesen Types gelöscht wird.

Copy-Konstruktor und Destruktor können als Spezialfall eines Konverters gesehen werden. Wegen der internen Speicherbereinigung werden sie kaum benötigt. Bei ihrer Definition ist besondere Vorsicht notwendig: Sobald hier ein Objekt dieses Types kopiert wird (z.B. bei der Weitergabe an eine andere Funktion), führt der Aufruf des Konstruktors/Destruktors zu einer endlosen Rekursion.

KLASSIFIKATIONEN

Der EFEU-Interpreter bietet vielfältige Möglichkeiten, um Daten zu Klassifizieren. Implizit wird dabei immer auch ein unbenannter Aufzählungstyp eingerichtet.

Es gibt zwei Möglichkeiten, eine Klassifikation einzurichten:

bool Type_t::classification (str name, str def)

generiert zu einem Datentyp eine Komponente name, die bei Abfrage die Klassifikation des Wertes liefert.
virtual Expr_t classification (. &, str def)
virtual Expr_t classification (Expr_t, str def)
liefert einen Ausdruck, der bei Auswertung die Klassifikation liefert. Der Klassifikationausdruck kann wahlweise für einen L-Wert oder einen Ausdruck eingerichtet werden.
Die Klassifikationsdefinition def hat immer den gleichen Aufbau. Zu Beginn steht die Art der Klassifikation. Die verfüggbaren Klassifikationsarten sind Datentypabhängig.

Folgende Klassifikationsarten stehen für alle Datentypen zur Verfügung:

flag

Entscheidung über einen Ausdruck.

switch

Einteilung über eine switch-Anweisung.

test

Einteilung über einen Testausdruck

generic

Kombination der obengenannten Klassifikationsarten.

Die Klassifikationsarten switch, test und flag sind Sonderfälle der generische Klassifikationsart generic. Diese hat den folgenden Aufbau:
generic
generic-group
...
generic-group:
switch-group
test-group
@eval expr
@other label desc
Der Eintrag @eval dient zur Berechnung von Zwischenergebnissen. @other steht für alle noch nicht abgedeckten Fälle.

test-group:

@test expr
key label desc
generic-group
@end
In expr wird $1 gegen den aktuellen Schlüssel key ersetzt.

switch-group:

@case
key label desc
generic-group
@end

BEMERKUNGEN

Dieser Handbucheintrag kann nur eine verkürzte Darstellung des Interpreters liefern. An einem entsprechend umfangreichen Buch wird gearbeitet. Einzelne Kapitel dieses Buches sind bereits in den Dokumentationen zu EFEU enthalten.

Zusätzliche Informationen können mit esh selbst abgerufen werden. Die Option --info liefert eine Schnittstelle zu eingebauten Informationen. Im Interpreter kann auf diese Informationen mit der Funktion Info() zugegriffen werden.

Die Nutzung der eingebauten Informationen hat den Vorteil, dass sie immer vollständig und aktuell sind. Allerdings sind die zugehörigen Erläuterungen (wenn es welche gibt) sehr knapp gehalten.

Falls die Verwendung einer Funktion nicht klar ist: Durch Eingabe des Funktionsnamens wird der Prototype (bei virtuellen Funktionen auch alle Überladungen) angezeigt.

Informationen zu einem Datentyp foo können interaktiv mithilfe von foo.info(["mode"]) abgerufen werden. Diese Anweisung entspricht dem Aufruf von esh mit der Option --info=[mode:]/Type/foo. Die Angabe von mode ist optional.

Einzelne Parameter eines Datentyps können auch über Komponenten abgerufen werden. Eine Liste aller verfügbaren Komponenten kann mit Type_t.var abgerufen werden.

Weitere nützliche Variablen und Funktionen:

global

ist die Tabelle der globalen Variablen (sehr umfangreich).

local

ist die Tabelle der lokalen Variablen. Im äußeren Modus stimmt local mit global überein.

str whatis (.)
liefert Informationen zu dem Argument. liefert den Datentyp des Arguments.

void vtabstack (int = 0, IO = iostd)

zeigt die aktuelle Hierarchie der Variablentabellen.
List_t typelist ()
liefert eine Liste aller definierten Datentypen.
void Type_t::info (str mode = NULL)
liefert Informationen zu einem bestimmten Datentyp.

UMGEBUNGSVARIABLEN

APPLPATH

definiert zusätzliche Verzeichnisse für Konfigurationsdateien.

LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

ESHPATH

erweitert den Suchpfad für Skriptfiles.

COPYRIGHT
Copyright (C) 1994, 2001 Erich Frühstück

findgrep(1)

findgrep -- Dateien eines Verzeichnisses nach Mustern durchsuchen.

ÜBERSICHT

findgrep--help[=type] ] [ --version ] [ grep-options ] [ pat | -e pat | -F pat | -f file ] dirfind-options ]

BESCHREIBUNG

Das Kommando findgrep stellt mit find eine Liste von Dateien zusammen, die anschließend mit grep nach dem Muster Muster durchsucht werden. Damit der Umgebungspeicher nicht überläuft, wird xargs zum Aufruf von grep verwendet. Die grep-Optionen werden nicht geprüft, sondern nur durchgeschleußt.

Find wird automatisch mit den Flags -type f und -print aufgerufen. Falls find -print0 ünterstützt, wird diese Option anstelle von -print verwendet. Daduch können auch Dateien mit Leerzeichen und anderen Sonderzeichen im Namen verarbeitet werden.

SIEHE AUCH

grep(1), find(1), xargs(1).

COPYRIGHT

Copyright (C) 2001 Erich Frühstück

htmlindex(1)

htmlindex -- HTML-Index in der aktuellen Bibliothek generieren

ÜBERSICHT

htmlindex--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ name ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando htmlindex akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

name

Ausgabefile

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 2001 Erich Frühstück

mdcat(1)

mdcat -- Datenmatrizen zusammenfassen

ÜBERSICHT

mdcat--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -T title ] [ -n name ] [ -m map ] [ -o out ] [ file(s) ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdcat akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-T title

Titel der Ausgabedatei setzen

-n name

Achsenbezeichner, Vorgabe X

-m map

Dateiabbild generieren

-o out

Name der Ausgabedatei

file(s)

Eingabedatei(en)

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdcmp(1)

mdcmp -- Zwei Datenmatrizen vergleichen

ÜBERSICHT

mdcmp--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -F file ] [ -E expr ] [ -f func ] [ -e expr ] [ -r ] [ -v var ] [ -T title ] file1 file2name=var } [ aus ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdcmp akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-F file

Datei file mit Befehlszeilen laden

-E expr

Ausdruck expr auswerten

-f func

Vergleichsfunktion

-e expr

Ausdruck

-r

Entfernen von singulären Achsen

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

file1

Name der 1. Eingabedatei

file2

Name der 2. Eingabedatei

name=var

Selektionsparameter

aus

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdcreate(1)

mdcreate -- Datenmatrix generieren

ÜBERSICHT

mdcreate--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -v value ] [ -T title ] [ -m map ] typename=var } [ aus ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdcreate akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-v value

Vorgabewert für Datenwerte

-T title

Titel der Ausgabedatei setzen

type

Datentype

-m map

Dateiabbild generieren

name=var

Achsendefinitionen

aus

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mddiag(1)

mddiag -- Datenmatrix diagonalisieren

ÜBERSICHT

mddiag--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -r ] [ -v var ] [ -T title ] [ -x axis ] [ -m map ] einname=var } [ aus ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mddiag akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-r

Entfernen von singulären Achsen

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

-x axis

Name der Achse

-m map

Dateiabbild generieren

ein

Name der Eingabedatei

name=var

Selektionsparameter

aus

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mddiff(1)

mddiff -- Zwei Datenmatrizen vergleichen

ÜBERSICHT

mddiff--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -E expr ] [ -F file ] [ -r ] [ -v var ] [ -p prec ] file1 file2name=var } [ out ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mddiff akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-E expr

Ausdruck expr auswerten

-F file

Datei file mit Befehlszeilen laden

-r

Entfernen von singulären Achsen

-v var

Variablenselektion

-p prec

Genauigkeit der Zahlenwerte

file1

Name der 1. Eingabedatei

file2

Name der 2. Eingabedatei

name=var

Selektionsparameter

out

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1998, 2001 Erich Frühstück

mdfile(1)

mdfile -- Informationen zu einer Datenmatrix ausgeben

ÜBERSICHT

mdfile--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -a ] [ -s ] [ -h ] [ -d ] [ -X ] [ -x ] [ -l ] [ file(s) ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdfile akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-a

Status zu allen Dateien

-s

Achsenstruktur ausgeben

-h

Datentyp und Header ausführlich ausgeben

-d

Beschreibungstext ausgeben

-X

Achsen verkürzt auflisten

-x

Achsen ausführlich auflisten

-l

Lange Auflistung, entspricht -hdx

file(s)

Datenfile(s)

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdfunc(1)

mdfunc -- Funktion auf Datenmatrix anwenden

ÜBERSICHT

mdfunc--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -F file ] [ -E expr ] [ -r ] [ -m map ] [ -v var ] [ -T title ] [ --neg ] [ --not ] [ --cpl ] [ --rnd ] [ -f func ] [ -t type ] [ -e expr ] [ -x list ] [ -p prec ] filename=var } [ out ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdfunc akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-F file

Datei file mit Befehlszeilen laden

-E expr

Ausdruck expr auswerten

-r

Entfernen von singulären Achsen

-m map

Dateiabbild generieren

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

--neg

Negation

--not

Boolsche Negation

--cpl

Bitweises Komplement

--rnd

Runden auf Ganzzahlwerte

-f func

Funktion/Operator

-t type

Ausgabetype

-e expr

Ausdruck

-x list

Achsenliste für Spalten, Vorgabe "#-1"

-p prec

Genauigkeit der Zahlenwerte

file

Name der Eingabedatei

name=var

Selektionsparameter

out

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdmul(1)

mdmul -- Matrizen multiplizieren

ÜBERSICHT

mdmul--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -F file ] [ -E expr ] [ -r ] [ -m map ] [ -v var ] [ -T title ] [ -n dim ] [ -x axis ] [ -a name=var ] [ -b name=var ] file1 file2name=var } [ out ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdmul akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-F file

Datei file mit Befehlszeilen laden

-E expr

Ausdruck expr auswerten

-r

Entfernen von singulären Achsen

-m map

Dateiabbild generieren

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

-n dim

Zahl der gemeinsamen Achsen

-x axis

Name der gemeinsamen Achse

-a name=var

Selektionsparameter für die erste Datei

-b name=var

Selektionsparameter für die zweite Datei

file1

Name der 1. Eingabedatei

file2

Name der 2. Eingabedatei

name=var

Selektionsparameter für beide Datenfiles

out

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdpaste(1)

mdpaste -- Datenmatrizen bezüglich einer Achse zusammenhängen

ÜBERSICHT

mdpaste--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -r ] [ -m map ] [ -v var ] [ -T title ] [ -s ] [ -u ] [ -e expr ] [ -n name ] [ -o aus ] { name=var } file(s) ...

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdpaste akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-r

Entfernen von singulären Achsen

-m map

Dateiabbild generieren

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

-s

sortiert die Achsenbezeichner

-u

sortiert die Achsenbezeichner, wobei gleiche Bezeichner nur einmal verwendet werden. Bei gleichen Bezeichnern werden die Daten der zuletzt angegebenen Datei entnommen.

-e expr

definiert einen Vergleichsausdruck für die Sortierung. Im Ausdruck stehen die Variablen a und b für die jeweiligen Achsenezeichner. Falls expr nicht definiert ist, wird cmp(a,b) verwendet.

-n name

definiert die Achse, bezüglich der die Daten zusammengehängt werden. Die Vorgabe ist #1.

-o aus

definiert die Ausgabedatei. Fehlt die Option, wird die resultierende Datenmatrix im ASCII-Format zur Standardausgabe geschrieben.

name=var

Selektionsparameter

file(s) ...

ist die Liste der Eingabedatei(en).

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdpermut(1)

mdpermut -- Achsen einer Datenmatrix permutieren

ÜBERSICHT

mdpermut--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -r ] [ -v var ] [ -T title ] filename=var } [ out ] [ name(s) ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdpermut akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-r

Entfernen von singulären Achsen

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

file

Name der Eingabedatei

name=var

Selektionsparameter

out

Name der Ausgabedatei

name(s)

Achsenbezeichner zum vorreihen

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdprint(1)

mdprint -- Datenmatrix ausgeben

ÜBERSICHT

mdprint--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -F file ] [ -E expr ] [ -M mode ] [ --ascii ] [ --csv ] [ --tex ] [ --tab ] [ --data ] [ --sc ] [ --std ] [ --ps ] [ --psq ] [ --lp ] [ --lpq ] [ --mark ] [ --nomark ] [ -h ] [ -b ] [ -H ] [ -t ] [ -z ] [ -L loc ] [ --locale loc ] [ -f font ] [ -l width ] [ -3 ] [ -w width ] [ -p prec ] [ -d delim ] [ -g ] [ -e ] [ -x list ] [ -s list ] [ -r ] [ -R list ] [ -v var ] [ -T title ] [ -P name=list ] [ --paste name=list ] [ --paste-delim key ] [ -S list ] [ --split list ] filename=var } [ out ]

BESCHREIBUNG

Das Kommando mdprint dient zur Ausgabe einer Datenmatrix in Textformat.

Die folgenden Optionen und Argumente werden vom Kommando mdprint akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-F file

Datei file mit Befehlszeilen laden

-E expr

Ausdruck expr auswerten

-M mode

Ausgabemodus, Vorgabe "std"

--ascii

Aufbereitung als ASCII-Datei

--csv

Aufbereitung für excel

--tex

Aufbereitung für TeX

--tab

Aufbereitung für TeX-Tabellen

--data

Nur Datenwerte ausgeben

--sc

Aufbereitung für sc-Spreadsheet

--std

Fixe Spaltenausrichtung

--ps

Ausgabe als Postscriptfile, Hochformat

--psq

Ausgabe als Postscriptfile, Querformat

--lp

Ausgabe zum Drucker, Hochformat

--lpq

Ausgabe zum Drucker, Querformat

--mark

Spaltenbezeichner markieren

--nomark

Spaltenbezeichner unterdrücken

-h

Nur Header ausgeben

-b

Header unterdrücken

-H

Vollständigen Header ausgeben

-t

Nur Titel im Header ausgeben

-z

Nullwerte unterdrücken

-L loc, --locale loc

Lokale für Zahlendarstellung auf loc setzen

-f font

Fontgröße in pt

-l width

Breite der Zeilenbezeichner

-3

3-Stellige Gleitkommausrichtung

-w width

Feldbreite der Zahlenwerte

-p prec

Genauigkeit der Zahlenwerte

-d delim

Trennzeichen in Listen

-g

Universalformat verwenden

-e

Exponentialformat verwenden

-x list

Achsenliste für Spalten

-s list

Achsen aufsummieren

-r

Entfernen von singulären Achsen

-R list

Entfernen von singulären Achsen aus der Liste list

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

-P name=list, --paste name=list

Liste list von Achsen zu neuer Achse name zusammenfassen

--paste-delim key

Begrenzer für das Verkleben von Achsen, Vorgabe _

-S list, --split list

Datenmatrix nach Achse(n) list aufspalten.

file

Name der Eingabedatei

name=var

Selektionsparameter

out

Name der Ausgabedatei

Beim Aufspalten einer Datenmatrix nach Achsen werden Dateinamen der Form
[pfx_]name1[_name2][.sfx]
konstruiert. Dabei gibt namei jeweils die aktuelle Ausprägung der Achse i an. Das Trennzeichen _ kann mit --paste-delim delim geändert werden. Die Namensteile pfx und sfx werden aus dem Ausgabenamen nach folgenden Regeln bestimmt:
-

(oder keine Angabe) pfx = NULL; sfx = default

a

pfx = a, sfx = default

.b

pfx = NULL, sfx = b

a.

pfx = a, sfx = NULL

a.b

pfx = a, sfx = b

Der Defaultwert für sfx wird von der Option --csv auf csv gesetzt und ist ansonsten NULL.

UMGEBUNGSVARIABLEN

APPLPATH

definiert zusätzliche Verzeichnisse für Konfigurationsdateien.

LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

SIEHE AUCH
esh(1).

COPYRIGHT

Copyright (C) 1997, 2001 Erich Frühstück

mdread(1)

mdread -- Datenmatrix lesen

ÜBERSICHT

mdread--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -x name ] [ -y name ] [ -t type ] [ -M ] [ -L loc ] [ --locale loc ] [ --sc ] [ -r ] [ -m map ] [ -v var ] [ -T title ] filename=var } [ out ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdread akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-x name

Spaltenachsenname(n)

-y name

Zeilenachsenname(n)

-t type

Datentype

-M

Test auf Kennung

-L loc, --locale loc

Lokale für Zahlendarstellung auf loc setzen

--sc

SC-Spreadsheet konvertieren

-r

Entfernen von singulären Achsen

-m map

Dateiabbild generieren

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

file

Name der Eingabedatei

name=var

Selektionsparameter

out

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdround(1)

mdround -- Zahlenwerte einer Datenmatrix runden

ÜBERSICHT

mdround--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -r ] [ -m map ] [ -v var ] [ -T title ] [ -s val ] [ -m val ] filename=var } [ out ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdround akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-r

Entfernen von singulären Achsen

-m map

Dateiabbild generieren

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

-s val

adjustieren auf Matrixsumme val

-m val

Skalare Multiplikatcwion mit val

file

Name der Eingabedatei

name=var

Selektionsparameter

out

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdselect(1)

mdselect -- Teilmatrix selektieren

ÜBERSICHT

mdselect--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -F file ] [ -E expr ] [ -r ] [ -m map ] [ -s list ] [ -v var ] [ -T title ] einname=var } [ aus ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdselect akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-F file

Datei file mit Befehlszeilen laden

-E expr

Ausdruck expr auswerten

-r

Entfernen von singulären Achsen

-m map

Dateiabbild generieren

-s list

Achsen aufsummieren

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

ein

Name der Eingabedatei

name=var

Selektionsparameter

aus

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdsum(1)

mdsum -- Achsen einer Datenmatrix aufsummieren

ÜBERSICHT

mdsum--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -r ] [ -v var ] [ -T title ] in outname=var } [ name(s) ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdsum akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-r

Entfernen von singulären Achsen

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

in

Name der Eingabedatei

out

Name der Ausgabedatei

name=var

Selektionsparameter

name(s)

Achsenbezeichner

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mdterm(1)

mdterm -- Zwei Datenmatrizen verknüpfen

ÜBERSICHT

mdterm--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -F file ] [ -E expr ] [ --add ] [ --sub ] [ --mul ] [ --div ] [ --min ] [ --max ] [ -f func ] [ -t type ] [ -e expr ] [ -p prec ] [ -r ] [ -m map ] [ -v var ] [ -T title ] file1 file2name=var } [ out ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando mdterm akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-F file

Datei file mit Befehlszeilen laden

-E expr

Ausdruck expr auswerten

--add

Punktweise Addition (default)

--sub

Punktweise Subtraktion

--mul

Punktweise Multiplikation

--div

Punktweise Division

--min

Minimum der beiden Werte

--max

Maximum der beiden Werte

-f func

Funktion/Operator

-t type

Ausgabetype

-e expr

Ausdruck

-p prec

Genauigkeit der Zahlenwerte

-r

Entfernen von singulären Achsen

-m map

Dateiabbild generieren

-v var

Variablenselektion

-T title

Titel der Ausgabedatei setzen

file1

Name der 1. Eingabedatei

file2

Name der 2. Eingabedatei

name=var

Selektionsparameter

out

Name der Ausgabedatei

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 1997, 2001 Erich Frühstück

mksource(1)

mksource -- Programmgenerierung

ÜBERSICHT

mksource--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -I dir ] [ -s ] [ -V ] [ -v ] [ -l ] [ -L name ] [ -r ] [ -x ] [ --all name ] [ --clean name ] [ --depend name ] [ --lock ] [ --unlock ] [ -d ] [ -D name ] [ -n name ] [ -h ] [ -c ] [ -H hdr ] [ -C src ] [ -t ] [ -T doc ] name

BESCHREIBUNG

Das Kommando mksource dient zur Generierung von C-Sourcefiles mithilfe des EFEU-Befehlsinterpreters.

Bei der Eingabedatei handelt es sich um ein Skriptfile für den Befehlsinterpreter. Die Ausgabe erfolgt in die folgenden IO-Strukturen:

hdr

C-Headerfile

top

Kopzeilen im C-Sourcefile

src

C-Sourcefile

info

Infodatei für eis

tex

LaTeX-Dokumentation (siehe Anmerkung am Ende)

doc

Dokumentationsfile (siehe Anmerkung am Ende)

Ob die mit den Ausgabestrukturen verbundenen Dateien auch generiert werden, hängt von einer Konfigurationszeile zu Beginn des Skripts ab. Sie hat die Gestalt:

config list[=filename]

wobei list die gewünschten Ausgabestrukturen enthält, für die auch eine Datei generiert werden soll. Der Basisname der Ausgabedateien wird vom Basisnamen des Skriptfiles bestimmt. Es gibt aber auch die Möglichkeit, die Namen der Ausgabedateien explizit vorzugeben. Die Ausgabestruktur top kann nicht angesprochen werden, sie ist mit src gekoppelt.

Falls keine Headerdatei hdr konfiguriert wurde, werden die Ausgaben nach hdr in den Kopf der Sourcedatei geschrieben.

Das Kommando erlaubt auch die Generierung von Makefileregeln. Falls eines der entsprechenden Flags gesetzt ist, werden keine Dateien generiert und nur die Regeln zur Standardausgabe geschrieben.

Folgende Optionen und Argumente werden vom Kommando mksource akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-I dir

erweitert den Suchpfad für Skriptfiles um dir.

-s

Arbeitsschritte nicht protokollieren

-V

Arbeitsschritte kurz protokollieren

-v

Arbeitsschritte ausführlich protokollieren

-l

Liste der zu generierenden Dateien

-L name

Liste mit Namen name generieren

-r

Makefileregeln generieren

-x

Keine Pseudoziele für Makefileregeln

--all name

Name des Generierungszieles

--clean name

Name des Löschzieles

--depend name

Name des Ziels für Abhängigkeitsregeln

--lock

Filegenerierung sperren

--unlock

hebt eine vordefinierte Sperre auf

-d

Abhängigkeitsregeln generieren

-D name

Abhängigkeitsregel für name generieren

-n name

Basisname für Standardnamen

-h

Headerfile mit Standardnamen generieren

-c

Sourcefile mit Standardnamen generieren

-H hdr

Headerfile mit Namen hdr generieren

-C src

Sourcefile mit Namen src generieren

-t

(veraltet) TeX-Dokumentation mit Standardnamen generieren, andere Files sperren

-T doc

(veraltet) TeX-Dokumentation doc generieren, andere Files sperren

name

Skriptfile

SIEHE AUCH
esh(1),
function(7).

BEMERKUNGEN

Die Generierung von Dokumentationen wird derzeit von LaTeX auf efeudoc umgestellt und kann daher nur begrenzt verwendet werden.

COPYRIGHT

Copyright (C) 1994 Erich Frühstück

mksrclist(1)

mksrclist -- Sourecliste generieren

ÜBERSICHT

mksrclist--help[=type] ] [ --version ] [ -f ] [ -x ] [ -e pat ] topname ]

BESCHREIBUNG

Das Kommando mksrclist generiert eine Liste von Dateien unterhalb von top.

Die folgenden Optionen und Argumente werden vom Kommando mksrclist akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-f

Forcierte Neugenerierung der Ausgabedatei

-x

Berücksichtige Sourcgenerierung mit mksource.

-e pat

Dateien ignorieren, die dem Muster pat entsprechen

top

Hauptbibliothek der Sourcen

name

Name der Ausgabedatei für ein update

SIEHE AUCH
shmkmf(1), d2m.smh(7).

DIAGNOSE

Das Kommando mksrclist liefert 2, falls ein Fehler bei der Erzeugung der Dateiliste auftrat. Falls die Dateiliste neu ist oder sich verädert hat, ist der Rückgabewert 1. Bei unveränderter Dateiliste ist er 0.

COPYRIGHT

Copyright (C) 2000 Erich Frühstück

pp2dep(1)

pp2dep -- Abhängigkeitsregeln aus Präprozessorausgabe generieren

ÜBERSICHT

pp2dep--help[=type] ] [ --version ] [ -l ] [ -x pattern ] [ target(s) ]

BESCHREIBUNG

Das Kommando pp2dep filtert aus der Ausgabe des C--Preprozessors die Namen von eingebundenen Dateien und stellt daraus eine Abhängigkeitsliste für die angegebenen Ziele target(s) zusammen.

Die folgenden Optionen und Argumente werden vom Kommando pp2dep akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-l

Nur lokale Dateien auflisten

-x pattern

Dateien, die Muster name entsprechen, nicht auflisten

target(s)

Liste der Generierungsziele

Die typische Anwendung für pp2dep erfolgt in einem Makefile der Form:
file.o: file.c
        $(CC) -c file.c

depend::
        $(CC) -E -c file.c | pp2dep -l file.o >> Makefile

SIEHE AUCH

cc(1), make(1), shmkmf(1).

shmkmf(1)

shmkmf -- Makefile mithilfe der Shell generieren

ÜBERSICHT

shmkmf--help[=type] ] [ --version ] [ -v ] [ -i ] [ -p ] [ -c string ] [ -x ] [ -r arg ] [ -t top ] [ -C dir ] [ -I dir ] [ config ] [ makefile ]

BESCHREIBUNG

Das Kommando shmkmf generiert ein Makefile mithilfe der Shell. Dabei steht die volle Funktionalität der Shell zur Formulierung von Regeln zur Verfügung.

Folgende Optionen und Argumente werden vom Kommando shmkmf akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-v

Zusätzliche Kommentare ins Makefile schreiben

-i

Lese Befehle aus der Standardeingabe

-p

Generierte Regeln zur Standardausgabe schreiben

-c string

Lese Befehle aus der Zeichenkette string.

-x

Keine zusätzlichen Regeln und Kommentare generieren

-r arg

Makefile in einem temprären Verzeichnis generieren und make mit gegebenem Argument arg aufrufen.

-t top

Setzt TOP auf top, Vorgabe: .

-C dir

Suchpfad für Konfigurationsdateien um dir erweitern

-I dir

Suchpfad für Headerdateien um dir erweitern

config

Name der Konfigurationsdatei, Vorgabe: Config.make

makefile

Name des generierten Makefiles, Vorgabe: Makefile

Im Normalfall wird shmkmf ohne Argumente aufgerufen. Im aktuellen Verzeichnis wird nach der Konfigurationsdatei Config.make gesucht und daraus die Datei Makefile generiert. Die Option -p dient zu Testzwecken und erlaubt die Ausgabe der make-Regeln zum Bildschirm, ohne dass ein Makefile generiert wird. Falls die Konfigurationsdatei in einem anderen Verzeichnis steht, genügt die Angabe des Verzeichnisses.

Die Konfigurationsdatei wird direkt von shmkmf eingebunden und kann beliebige Anweisungen enthalten. Alle Ausgaben werden in das zu generierende Makefile umgelenkt. Zur leichteren Formulierung der Regeln sind eine Reihe von Hilfsfunktionen vordefiniert.

Der Name der Konfigurationsdatei und der Name des Makefiles können über die nur lesbaren Variablen Config bzw. Makefile abgerufen werden. Weiters wird die Variable SRC auf den Namen des Verzeichnisses mit der Konfigurationsdatei gesetzt. Der Aufrufname von shmkmf wird in der Variablen shmkmf abgelegt.

Mithilfe der Zeile

test $shmkmf || exec shmkmf "$0" "$@"

kann die Konfigurationsdatei direkt aufgerufen werden.

Falls die Konfigurationsdatei von shmkmf eingebunden wurde, ist shmkmf definiert und die Zeile hat keinen Effekt, ansonsten wird shmkmf mit dem Skript als Argument aufgerufen. Optionen können auf diese Weise nicht weitergereicht werden. Dafür sind die folgenden Aufrufe gleichwertig:

./cf [mf]
sh cf [mf]
shmkmf cf [mf]

Die erste Form des Aufrufs setzt voraus, dass die Konfigurationsdatei cf Ausführbarkeitsrechte besitzt. Der Name mf des Makefiles kann optional angegeben werden.

Einbinden von Dateien

Mithilfe der Funktion include können Dateien eingebunden werden, die entsprechend dem aktuellen Stand des Suchpfads IncludePath gesucht werden. Für Dateien mit absoluten oder relativen Pfadnamen wird der Suchpfad nicht verwendet. Die so eingebundenen Dateien werden registriert und von mf_bootstrap zur Konstruktion einer Regel für das Makefile mf selbst verwendet. Zusätzliche Argumente von include können in der Datei ausgewertet werden. Diese Dateien werden im folgenden Headerdateien genannt. In der Regel enthalten sie die Definitionen von Hilfsfunktionen zur Generierung von Regeln. Falls eine Headerdatei nicht gefunden wird, wird die Verarbeitung abgebrochen.

Eine Datei kann mithilfe der folgenden Zeilen gegen eine Mehrfacheinbindung geschützt werden:

test $foo && return
foo=1

Dabei ist foo eine Hilfsvariable mit einem beliebigen, sonst nicht verwendeten Namen.

Für die Standardheader wird ein Dateiname der Form name.smh verwendet. Die zugehörige Hilfsvariable zum Schutz gegen Mehrfacheinbindung heißt name_smh.

Analog zu include können Konfigurationsdateien mit der Funktion config entsprechend dem aktuellen Stand des Suchpfads ConfigPath gesucht werden. Im Unterschied zu include führt das fehlen einer Konfigurationsdatei nicht zum Abbruch der Verarbeitung.

Eine weitere Variante zu include stellt die Funktion xinclude dar. Die Headerdatei wird dabei von einer eigenen Instanz von shmkmf überarbeitet und das Ergebnis in einer Datei zwischengespeichert. Der Name der Zwischendatei wurd durch das zweite Argument der Funktion festgelegt. Fehlt die Angabe, wird der Basisname der Headerdatei (ohne Zusatz .smh) mit dem Zusatz .stat verwendet.

Zusätzlich wird eine Erneuerungsregel für die Zwischendatei generiert. Bei jedem Aufruf von make wird geprüft, ob sich der Inhalt der Zwischendatei verändert hat und eine Aktualisiierung des Makefiles notwendig ist.

Die Funktion xinclude wird typischerweise zum Einbinden von Übersetzungsparametern verwendet, deren Setzung von der Systemumgebung abhängt und sich verändern kann (Nachinstallation von Programmbibliotheken, etc..).

Die Verwendung von xinclude alleine genügt nicht, damit der Make-Prozess auf Veränderungen der Systemumgebung angepaßt wird. Zusätzlich sind auch noch Abhängigkeiten für die von den Übersetzungsparametern betroffenen Dateien von der Zwischendatei einzutragen.

Basisregeln

Das Kommando shmkmf ergänzt die Regeln in der Konfigurationsdatei um eine Reihe von Zeilen.

Aus der Konfiguartionsdatei mit der Kommentardefinition

mf_comm "Anwenderdefinitionen"

wird das Makefile

# Nicht editieren, Datei wurde mit
# /home/efeu/www/efeu-3.3-1/bin/shmkmf /var/tmp/tmp1301i/Config.make
# generiert.

CONFIG= /var/tmp/tmp1301i/Config.make
MAKEFILE= Makefile

# Anwenderdefinitionen

# Von shmkmf ergänzte Regeln:

all::

Makefile: /home/efeu/www/efeu-3.3-1/bin/shmkmf \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/base.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/comment.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/dir.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/file.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/foreach.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/rule.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/srclist.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/update.smh \
  /home/efeu/www/efeu-3.3-1/lib/shmkmf/var.smh \
  /var/tmp/tmp1301i/Config.make
        /home/efeu/www/efeu-3.3-1/bin/shmkmf /var/tmp/tmp1301i/Config.make

update::
        /home/efeu/www/efeu-3.3-1/bin/shmkmf /var/tmp/tmp1301i/Config.make

install:: all

depend::

purge:: 
        rm -f core

clean:: purge

uninstall::

Die Regel für das Makefile und das Pseudoziel update werden dabei mit der Funktion mf_bootstrap generiert. Die Liste der Dateien, von denen Makefile abhängt, wird intern gespeichert und kann mit der Funktion add_depend erweitert werden. Der Aufruf von shmkmf steht in der nur lesbaren Variablen bootstrap.

Die Zusatzzeilen können mit der Option -x unterdrückt werden.

Schreiben von Regeln

Es gibt mehrere Möglichkeiten, Ausgaben für das Makefile zu erzeugen.

Zunächst können die Regeln direkt mit echo oder printf generiert werden. Für echo gibt es leider unterschiedliche Implementationen, was die Handhabung von maskierten Zeichen wie \t für Tabulator, \n für Zeilenvorschübe und \c zur Unterdrückung des Zeilenvorschubs am Ende der Zeile betrifft. Daher lautet die X/Open Empfehlung generell printf anstelle von echo zu verwendet.

So wird mit der Befehlszeile

printf '%s: %s\n\t$(CC) -o $@ %s\n' foo foo.c foo.c

die folgende Kompilierungsregel

foo: foo.c
        $(CC) -o $@ foo.c

erzeugt.

Weiters können make-Regeln direkt in die Konfigurationsdatei eingebettet werden. Dazu wird cat und die Syntax von » here-documenten« verwendet.

Die folgenden Zeilen liefern die gleiche Ausgabe wie die printf Anweisung.

cat << EOF
foo: foo.c
        \$(CC) -o \$@ foo.c
EOF

Beachte, dass für das »here-document« (Text zwischen EOF) eine Variablensubstitution erfolgt und daher der Dollar gequotet werden muss. Anstelle von EOF kann ein beliebiges Kennwort stehen. Wird das Kennwort unter Anführung gestellt, erfolgt keine Variablensubstitution durch die Shell und der Dollar muß nicht mehr gequoted werden.

Die bevorzugte Weise zur Erzeugung von Generierungsregeln ist jedoch der Einsatz von vordefinierten Hilfsfunktionen. Obige Regel kann auch mit

mf_rule foo foo.c '$(CC) -o $@ foo.c'

generiert werden. So formulierte Regeln erhöhen die Lesbarkeit der Konfigurationsdatei.

Die hier vorgestellte Funktion erlaubt die Ausgabe zusätzlicher Regeln für die Pseudoziele all und clean. So wird unter Verwendung des Flags -a mit

mf_rule -a foo foo.c '$(CC) -o $@ foo.c'

die Ausgabe


all:: foo

clean::
        rm -f foo

foo: foo.c
        $(CC) -o $@ foo.c

generiert.

Die Namen der Pseudoziele können durch setzen der Variablen AllTarget und CleanTarget modifiziert werden.

Die allgemeine Syntax von mf_rule ist

mf_rule [-a] tg dep cmd(s)

wobei jedes Kommando der Regel in eine eigene Zeile geschrieben wird. Die Ausgabe hat die Form:

tg: dep

cmd
...
Neben mf_rule bilden mf_comm und mf_var die elementaren Funktionen zur Regelkonstruktion.

Die Funktion mf_comm generiert für jedes Argument arg eine Kommentarzeile der Form:
# arg

Die Funktion mf_var generiert eine Variablendefinition für make. Als Argument wird der Name name der Variablen und der Zuweisungswert def übergeben. Variablen in make werden manchmal auch Makros genannt. Sie dürfen nicht mit Variablen der Shell verwechselt werden.

Die generierten Zeilen haben die Form:

name= def

Falls def mit mehr als einem Argument übergeben wird, wird die Variablendefinition in mehrere Zeilen aufgespalten.

Beispiel:

mf_var foo bar
mf_var OBJ foo.o bar.o

erzeugt die Ausgabe


foo= bar

OBJ= foo.o \
        bar.o

Abschließend sei noch erwähnt, dass zur Regelkonstruktion beliebige externe Kommandos eingesetzt werden können.

Ermitteln von Abhängigkeiten

Für eine Reihe von Aufgaben besteht die Möglichkeit, die Abhängigkeiten automatisch zu ermitteln. So kann aus der Analyse der Preprozessor-Ausgabe des C-Kompilers die Liste aller eingebundenen Dateien ermittelt werden. In der Regel überläßt man make selbst die Zusammenstellung der Abhängigkeiten mithilfe des Pseudoziels depend. Ein Aufruf von make depend ergänzt das Makefile mit den entsprechenden Abhängigkeitsdefinitionen.

Die Funktion mf_depend richtet solche Abhängigkeitsregeln ein, wobei make depend automatisch nach Erstellung des Makefiles aufgerufen wird.

Die allgemeine Syntax von mf_depend ist

mf_depend [-d dep] cmd(s)

Verschieben von Kommandos

Die Funktion postpone sorgt für eine spätere Ausführung eines Kommandos nach Abarbeitung aller nachfolgenden Befehle. Die Argumente werden beim Aufruf von postpone expandiert und dürfen keine einfachen Anführungszeichen enthalten. Der zuletzt verschobene Befehl wird als erstes ausgeführt. Die Verschiebung von Kommandos kann geschachtelt werden.

Die folgenden Zeilen

mf_comm Anfang
postpone mf_comm "1. Aufschub"
mf_comm "Mitte 1"
postpone postpone mf_comm "2. Aufschub (doppelt)"
mf_comm "Mitte 2"
postpone mf_comm "3. Aufschub"
mf_comm Ende

erzeugen die Ausgabe


# Anfang

# Mitte 1

# Mitte 2

# Ende

# 3. Aufschub

# 1. Aufschub

# 2. Aufschub (doppelt)

Zum Aufschieben werden die Kommandos zunächst in die Datei shmkmf_post geschrieben. Nach der Abarbeitung der Eingabe werden die einzelnen Zeilen der Datei in der Reihenfolge umgedreht und anschließend abgearbeitet.

Anstelle der Verwendung von postpone können Zeilen direkt an die Datei shmkmf_post angehängt werden. Diese Möglichkeit sollte jedoch nur in Hilfsfunktionen, nicht aber für normale Anweisungen in der Konfigurationsdatei verwendet werden.

Temporäre Dateien

Das Kommando shmkmf richtet ein temporäres Verzeichnis ein, dass am Ende der Verarbeitung automatisch gelöscht wird. Dieses Verzeichnis kann für Zwischendateien verwendet werden. Sein Name steht in der nur lesbaren Variablen TMP.

Dabei sollten folgende Regeln beachtet werden:

  • Alle Dateinamen, die mit shmkmf oder dem Basisnamen einer eingebundenen Headerdatei beginnen, sind reserviert.
  • Temporäre Dateien, die nur innerhalb einer Funktion verwendet werden, sollten dort auch entfernt werden.
  • Die Namen von persistenten Dateien (solche die über den Aufruf einer Funktion hinaus, oder während des Aufrufs einer anderen Funktion existieren) sollten mit dem Basisnamen der Headerdatei beginnen.

Interne Hilfsfunktionen und Variablen
Interne Hilfsfunktionen und Variablen werden in der Regel nicht in Konfigurationsdateien verwendet. Sie erleichtern jedoch die Definition von Funktionen in eigenen »Header«-Dateien.

Die Funktion shmkmf_abort löscht das zu generiende Makefile und bricht die Verarbeitung ab. Der aktuelle Stand des Makefiles wird am Fehlerkanal ausgegeben. Sie wird intern von Hilfsfunktionen im Fehlerfall verwendet.

Die Funktion shmkmf_warg wird von Hilfsfunktionen im Fall des Aufrufs mit der falschen Zahl an Argumente verwendet. Die Funktion shmkmf_warg erwartet als Argument den Namen der Funktion. Sie produziert eine entsprechende Fehlermeldung und bricht die Verarbeitung mit shmkmf_abort ab.

Die Funktion shmkmf_invop wird von Hilfsfunktionen im Fall des Aufrufs mit einer ungültigen Option verwendet. Die Funktion shmkmf_invop erwartet als Argument den Namen der Funktion und die unbekannte Optionskennung. Sie produziert eine entsprechende Fehlermeldung und bricht die Verarbeitung mit shmkmf_abort ab.

Die Funktion mf_bootstrap erzeugt die Regeln zur Erneuerung des Makefiles aus der Konfigurationsdatei. Sie wird im Normalfall automatisch als Standardregel an ein Makefile angehängt (kann mit der Option -x deaktiviert werden). Zur Definition der Regel wird shmkmf_deplist mit den Abhängigkeiten und shmkmf für den Aufruf von shmkmh mit den übergebenen Parametern.

Die Variable shmkmf_id enthält den Aufrufnamen von shmkmf. Sie wird bei der Ausgabe von Fehlermeldungen verwendet.

SIEHE AUCH

make(1) im Programmer''s Reference Manual.

shmkmf-cflags(1)

shmkmf-cflags -- Bestimmung von C-Flags zur Einbindung externer Bibliotheken

ÜBERSICHT

shmkmf-cflags--help[=type] ] [ --version ] [ -m[name] ] [ -I[path] ] [ -L[path] ] [ -a ] [ -o ] [ -l lib ] [ name ]

BESCHREIBUNG

Folgende Optionen und Argumente werden vom Kommando shmkmf-cflags akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-m[name]

Makro name mit gefundenen Flags initialisieren.

-I[path]

Suchpfad für Kopfdateien, Vorgabe: /usr/include.

-L[path]

Suchpfad für Bibliotheken, Vorgabe: /lib:/usr/lib.

-a

Nächste Suche nur durchführen, wenn letzte Suche erfolgreich war.

-o

Nächste Suche nur durchführen, wenn letzte Suche fehlschlug.

-l lib

Suche nach der Bibliothek, die dem regulären Ausdruck ^lib(lib)\.(a|so)$ entspricht. Liefer bei Erfolg das entsprechende -l flag und falls die Bibliothek nicht in einem der beiden Verzeichnisse /lib oder usr/lib liegt, optional auch ein eintsprechendes -Ldir flag.

name

Suche nach dem Verzeichnis dir, welches die Kopfdatei name enthält, wobei name Pfadteile enthalten kann (z.B: X11/X.h) Falls dir verschieden von /usr/include ist, wird ein Kompileflag der Form -Idir erzeugt.

COPYRIGHT
Copyright (C) 2008 Erich Frühstück

shmkmf-config(1)

shmkmf-config -- Konfigurationswerkzeug für shmkmf

ÜBERSICHT

shmkmf-config--help[=type] ] [ --version ] [ -v ] [ -x ] [ -s ] [ -c name ] [ -i hdr ] [ -I hdr ] [ -r hdr ] [ -f flgs ] cmdarg(s) ]

BESCHREIBUNG

Das Kommando shmkmf-config dient zur Bestimmung von systemspezifischen Parametern. Normalerweise wird damit eine Schablone für ein C-Headerfile mit speziellen Testanweisungen überarbeitet. Diese Anweisungen werden mit awk isoliert und von shmkmf-config verarbeitet.

Manche Tests generieren C-Sourcen und überprüfen den Kompilierungsstatus. Falls die -x Option gesetzt ist, wird das generierte Programm auch ausgeführt und seine Ausgabe eingearbeitet.

Die folgenden Optionen und Argumente werden vom Kommando shmkmf-config akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-v

Fehlermeldungen ausgeben

-x

Kompiliertes Programm ausführen

-s

Funktionsrumpf von der Standardeingabe lesen

-c name

C-Kompiler zum Testen

-i hdr

Headerfile einbinden

-I hdr

Headerfile, falls existiert, einbinden

-r hdr

Headerfile für shmkmf einbinden

-f flgs

Flags für C-Kompiler

cmd

Auszuführendes Kommando

arg(s)

Befehlsspezifische Argumente

Das erste Argument bestimmt die Aktivitäten von shmkmf-config. Fals es file oder update ist, wird eine Schablonendatei verarbeitet, ansonsten wird ein spezieller Test durchgeführt.

In der Schablonendatei wird jedes Vorkommen von @SRC@ durch den Namen der Schablonendatei und @CMD@ durch shmkmf-config ersetzt. Die folgenden Schlüsselwörter am Anfang der Datei werden akzeptiert:

@set flags

Setzt Optionen für die nachfolgenden Aufrufe von shmkmf-config.
@add flags
Erweitert die Optionen für die nachfolgenden Aufrufe von shmkmf-config.
@include file
Falls die Headerdatei file existiert, wird eine include-Direktive generiert und die Optionen für die nachfolgenden Aufrufe von shmkmf-config erweitert, um sie einzubinden.
@eval args
Ruft shmkmf-config mit den angegebenen Argumenten args auf.
@cflags args
Ruft shmkmf-cflags mit den angegebenen Argumenten args auf.
@beg args
...
@end
Ruft shmkmf-config mit Option -s und den angegebenen Argumenten auf und leitet alle Zeilen zwischen @beg und @end an shmkmf-config weiter.
Die folgenden Kommandos werden vom Programm shmkmf-config ausgeführt:

file [name]

Fügt in Datei name systemspezifische Parameter ein
update src tg
Fügt in die Datei src systemspezifische Parameter ein und erneuert tg, falls sich das Ergebniss von ihr unterscheidet oder src neueres Datum hat als tg.
check expr
Testet Kompilierung/Ausführung von expr ohne zusätzliche Ausgabe.
report expr
Meldet den Status der Kompilierung/Ausführung von expr.
error message expr
Generiert #error Directive mit message, falls die Kompilierung/Ausführung von expr fehlschlägt.
success tname expr
Falls die Kompilierung/Ausführung von expr erfolgreich ist, wird der Makro tname mit 1, ansonsten mit 0 definiert.
failure tname expr
Falls die Kompilierung/Ausführung von expr fehlschlägt, wird der Makro tname mit 1, ansonsten mit 0 definiert.
include name
Bindet header name ein, falls verfügbar.
proto proto
Testet die Kompatiblität des Prototypes proto.
typedef type decl
Falls der Type type nicht deklariert ist, wird er mit decl type definiert.

SIEHE AUCH

shmkmf(1), shmkmf-cflags(1).

COPYRIGHT

Copyright (C) 2002, 2008 Erich Frühstück

src2doc(1)

src2doc -- Dokumentation aus Sourcefile generieren

ÜBERSICHT

src2doc--help[=type] ] [ --version ] [ --info[=entry] ] [ --debug[=mode] ] [ --verbose ] [ -t ] [ --ps ] [ -c ] [ -n name ] [ -m mode ] [ -s num ] [ -i fmt ] [ -g ] [ -L lang ] [ -l ] [ -a ] srcout ]

BESCHREIBUNG

Die folgenden Optionen und Argumente werden vom Kommando src2doc akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
--info[=entry]

listet verfügbare Informationseinträge des Kommandos auf.

--debug[=mode]

setzt den Protokollmodus für das Kommando. Vergleiche dazu .

--verbose

setzt den Debug-Level auf .info.

-t

Terminalausgabe

--ps

PostScript-Aufbereitung

-c

Programmcode einbinden

-n name

Ausgabename

-m mode

Verarbeitungsmodus

-s num

Handbuchabschnitt

-i fmt

Format für Headerdateien

-g

Globale Einbindedateien

-L lang

Sprachumgebung

-l

Verarbeitungsmodi auflisten

-a

Aliastabelle ausgeben

src

Eingabefile

out

Ausgabefile

UMGEBUNGSVARIABLEN

APPLPATH
definiert zusätzliche Verzeichnisse für Konfigurationsdateien.
LANG

bestimmt die Sprache für Meldungen und Hilfetexte.

COPYRIGHT
Copyright (C) 2000 Erich Frühstück

tex2ps(1)

tex2ps -- TeX-Formatierung

ÜBERSICHT

tex2ps--help[=type] ] [ --version ] [ -q ] [ -n count ] [ -r res ] srcps ]

BESCHREIBUNG

Folgende Optionen und Argumente werden vom Kommando tex2ps akzeptiert:

--help[=type]

generiert eine Beschreibung des Kommandos. Der zusätzliche Parameter type bestimmt die Formatierung und die Ausgabe der Beschreibung.

term

Terminalausgabe (default)

raw

Rohformat für efeudoc

man

nroff/troff Sourcen für man

lp

Ausgabe zum Drucker

--version
gibt die Versionsnummer des Kommandos aus.
-q

Landscape

-n count

Zahl der Formatierungsläufe

-r res

Auflösung

src

Definitionsfile

ps

Ausgabefile

COPYRIGHT
Copyright (C) 1993, 2001 Erich Frühstück


Gehe zum Dokumentanfang, Inhalt, Index