Bei einer COMMAND-Aktion müssen mindestens zwei Felder angegeben werden - ACTION und EXEC_STRING.
ACTION Aktionsname { EXEC_STRING Ausführungszeichenfolge }
Die Ausführungszeichenfolge ist der wichtigste Teil einer COMMAND-Aktionsdefinition. Die verwendete Syntax entspricht der Befehlszeile in einem Terminal-Fenster, enthält aber zusätzliche Elemente für Datei- und Zeichenfolgenargumente.
Ausführungszeichenfolgen können folgendes enthalten:
Dateiargumente und andere Parameter
Shell-Syntax
Absolute Pfade oder Namen ausführbarer Dateien
Bei einem Argument handelt es sich um Informationen, die von einem Befehl oder einer Anwendung für die Ausführung benötigt werden. So kann beispielsweise mit der folgenden Befehlszeile eine Datei im Texteditor geöffnet werden:
dtpad Dateiname
In diesem Befehl ist Dateiname ein Dateiargument für den Befehl dtpad.
Aktionen können wie Anwendungen und Befehle mit Argumenten aufgerufen werden. Bei einer COMMAND-Aktion können dabei zwei Arten von Daten verwendet werden:
Dateien
Zeichenfolgen
Die Ausführungszeichenfolge wird direkt und nicht durch eine Shell ausgeführt. Es kann jedoch explizit eine Shell in der Ausführungszeichenfolge aufgerufen werden.
Beispiel:
EXEC_STRING \ /bin/sh -c \ 'tar -tvf %(File)Arg_1% 2>&1 | \${PAGER:-more};\ echo "\\n*** Zum Schließen im Menü 'Fenster' die Option 'Schließen' wählen ***"'
Befindet sich die Anwendung in einem Verzeichnis, das in der PATH-Variablen aufgeführt ist, muß nur der Name der ausführbaren Datei angegeben werden. Ist das Verzeichnis nicht im Pfad enthalten, muß der absolute Pfadname der ausführbaren Datei verwendet werden.
Verwenden Sie für EXEC_STRING dieselbe Syntax wie für den Start der Anwendung von der Befehlszeile.
Die folgende Ausführungszeichenfolge gehört zu einer Aktion, die den X-Client xcutsel startet.
EXEC_STRING xcutsel
Die nächste Zeichenfolge startet den Client xclock mit einer Digitaluhr. Die Befehlszeile enthält eine Befehlszeilenoption, aber es werden keine Argumente benötigt.
EXEC_STRING xclock -digital
Verwenden Sie für das Dateiargument folgende Syntax:
%Arg_n%
oder
%(File)Arg_n%
(File) ist optional, da an Arg_n übergebene Werte standardmäßig als Dateien betrachtet werden. (Siehe auch "Ein Dateiargument als Zeichenfolge interpretieren" zur Verwendung der %(String)Arg_ n%-Syntax.)
Mit dieser Syntax kann der Benutzer ein Dateiobjekt auf dem Aktionssymbol ablegen, um die Aktion mit dem übergebenen Dateiargument zu starten. Dabei wird das nte Argument in die Befehlszeile übernommen. Die Datei kann sich auf dem lokalen oder auf einem entfernten System befinden.
Die folgende Ausführungszeichenfolge führt wc -S aus. Dabei wird eine abgelegte Datei im Parameter -load verwendet.
EXEC_STRING wc -w %Arg_1%
Im folgenden Beispiel können nur Verzeichnisargumente verwendet werden. Wird ein Verzeichnis auf dem Aktionssymbol abgelegt, zeigt die Aktion eine Liste aller Dateien im Verzeichnis an, für die Lese-/Schreibzugriffsrechte vorliegen.
ACTION Beschreibbare_Dateien_anzeigen { ARG_TYPE FOLDER EXEC_STRING /bin/sh -c 's -l %Arg_1% | grep rw-' ... }
Verwenden Sie für das Dateiargument folgende Syntax:
%(File)"Eingabeaufforderung"%
Mit dieser Syntax wird eine Aktion erstellt, die eine Aufforderung zur Eingabe eines Dateinamens anzeigt, sobald der Benutzer auf das Aktionssymbol doppelklickt.
So zeigt beispielsweise folgende Ausführungszeichenfolge ein Dialogfeld an, in dem der Benutzer zur Eingabe des Dateiarguments für den Befehl wc -S aufgefordert wird:
EXEC_STRING wc -w %(File)"Wörter zählen in Datei:"%
Verwenden Sie für das Dateiargument folgende Syntax:
%Arg_n"Eingabeaufforderung"%
oder
%(File)Arg_n"Eingabeaufforderung"%
Mit dieser Syntax wird eine Aktion erstellt, die
eine abgelegte Datei als Argument akzeptiert oder
ein Dialogfeld mit einer Aufforderung zur Eingabe eines Dateinamens anzeigt, sobald der Benutzer auf das Aktionssymbol doppelklickt.
So führt beispielsweise diese Ausführungszeichenfolge den Befehl lp -oraw für die abgelegte Datei aus. Wird die Aktion durch Doppelklicken auf das Symbol gestartet, erscheint ein Dialogfeld mit einer Aufforderung zur Eingabe des Dateinamens.
EXEC_STRING lp -oraw %Arg_1"Zu druckende Datei:"%
Verwenden Sie für Nicht-Dateiargumente folgende Syntax:
%"Eingabeaufforderung"%
oder
%(String)"Eingabeaufforderung"%
(String) muß nicht angegeben werden, da in Anführungszeichen gesetzter Text standardmäßig als Zeichenfolge interpretiert wird. Mit dieser Syntax wird ein Dialogfeld angezeigt, in dem der Benutzer zur Eingabe aufgefordert wird. Verwenden Sie die Syntax nicht, um den Benutzer zur Eingabe eines Dateinamens aufzufordern.
Im folgenden Beispiel wird der Befehl xwd ausgeführt. Er fordert zur Eingabe eines Werts auf, der jedem Pixel hinzugefügt wird:
EXEC_STRING xwd -add %"Wert eingeben:"% -out %Arg_1"Dateiname:"%
Verwenden Sie für das Argument folgende Syntax:
%(String)Arg_n%
So druckt beispielsweise folgende Ausführungszeichenfolge mit dem Befehl lp -tDeckblatt_Dateiname eine Datei mit einem Deckblatt, das den Dateinamen enthält:
EXEC_STRING lp -t%(String)Arg_1% %(File)Arg_1"Zu druckende Datei:"%
Geben Sie die Shell folgendermaßen in der Ausführungszeichenfolge an:
/bin/sh -c 'Befehl' /bin/ksh -c 'Befehl' /bin/csh -c 'Befehl'
Das folgende Beispiel zeigt den Einsatz des Shell-Piping in einer Aktion.
EXEC_STRING /bin/sh -c 'ps | lp'
In diesem Beispiel wird eine komplexere Ausführungszeichenfolge verwendet, die eine Shell-Verarbeitung voraussetzt und ein Dateiargument akzeptiert.
EXEC_STRING /bin/sh -c 'tbl %Arg_1"Hilfeseite:"% | troff -man'
Die folgende Ausführungszeichenfolge benötigt als Argument eine komprimierte Datei. Die Aktion dekomprimiert die Datei und druckt sie mit dem Befehl lp -oraw.
EXEC_STRING /bin/sh -c 'cat %Arg_1 "Zu druckende Datei:"% | \ uncompress | lp -oraw'
Die folgende Ausführungszeichenfolge startet ein Shell-Skript.
EXEC_STRING /usr/local/bin/StartGnuClient
Aktionen können mehrere Dateiargumente auf drei verschiedene Arten bearbeiten:
Die Aktion wird für jedes Argument einmal ausgeführt. Enthält das Feld EXEC_STRING nur ein Dateiargument und werden mehrere Dateiargumente durch Ablegen an das Aktionssymbol übergeben, wird die Aktion für jedes Dateiargument separat ausgeführt.
Werden beispielsweise bei folgender Aktionsdefinition mehrere Dateiargumente angegeben:
ACTION DisplayScreenImage { EXEC_STRING xwud -in %Arg_1% ... }
wird die Aktion 'DisplayScreenImage' mehrmals ausgeführt.
Die Aktion verwendet mindestens zwei nicht austauschbare Dateiargumente. Beispiel:
xsetroot -cursor Cursordatei Maskendatei
setzt zwei eindeutige Dateien in der angegebenen Reihenfolge voraus.
Die Aktion führt denselben Befehl nacheinander für alle übergebenen Dateiargumente aus. Beispiel:
pr Datei [Datei ...]
druckt eine oder mehrere Dateien in einem Druckauftrag.
Verwenden Sie eine der folgenden Syntaxkonventionen:
Soll zur Eingabe der Dateinamen aufgefordert werden, verwenden Sie für jedes Dateiargument folgende Syntax:
%(File)"Eingabeaufforderung"%
Verwenden Sie für jedes Argument eine andere Eingabeaufforderung.
So fordert beispielsweise folgende Ausführungszeichenfolge zur Eingabe zweier Dateinamen auf:
EXEC_STRING xsetroot -cursor %(File)"Cursor-Bitmap:"% \ %(File)"Masken-Bitmap:"%
Sollen abgelegte Dateien akzeptiert werden, verwenden Sie folgende Syntax:
%Arg_n%
Dabei werden unterschiedliche n-Werte für jedes Argument verwendet. Beispiel:
EXEC_STRING diff %Arg_1% %Arg_2%
Verwenden Sie eine der folgenden Syntaxkonventionen:
Um eine Aktion zu erstellen, die abgelegte Dateien akzeptiert und einen Befehl der Form Befehl Datei 1 Datei 2 ... ausführt, verwenden Sie folgende Syntax für die Dateiargumente:
%Args%
Soll eine Aktion erstellt werden, die mehrere abgelegte Dateien akzeptiert oder bei einem Doppelklick eine Aufforderung zur Eingabe eines Dateinamens anzeigt, verwenden Sie folgende Syntax für die Dateiargumente:
%Arg_1"Eingabeaufforderung"% %Args%
Die Aktion gibt einen Befehl der Form Befehl Datei 1 Datei 2 ... aus.
Die folgende Ausführungszeichenfolge erstellt eine Aktion, die den Befehl
pr Datei 1 Datei 2
mit mehreren Dateiargumenten ausführt.
EXEC_STRING pr %Args%
Die folgende Ausführungszeichenfolge erstellt eine ähnliche Aktion wie im vorhergehenden Beispiel. Jedoch wird hier eine Eingabeaufforderung angezeigt, sobald auf das Aktionssymbol doppelgeklickt wird (keine Dateiargumente).
EXEC_STRING pr %Arg_1"Zu druckende Datei(en):"% %Args%
Um das Ablegen mehrerer Dateien zu akzeptieren und einen Befehl der Form
Befehl Datei 1 Datei 2 ...
auszuführen, verwenden Sie folgende Syntax:
%Args%
Die folgende Ausführungszeichenfolge startet das Skript 'Checkout' für mehrere Dateien:
EXEC_STRING /usr/local/bin/Checkout \ %Arg_1"Welche Datei?"% %Args%