Un'azione di tipo COMMAND deve contenere necessariamente almeno due campi: ACTION ed EXEC_STRING.
ACTION nome_azione { EXEC_STRING stringa_di_esecuzione }
La stringa di esecuzione è la parte più importante della definizione di un'azione COMMAND. Essa utilizza una sintassi simile a quella usata per le righe di comando nelle finestre di terminale, ma include alcuni componenti aggiuntivi per la gestione dei file e delle stringhe usate come argomenti.
Le stringhe di esecuzione possono includere:
Argomenti in forma di file o di altro tipo
Componenti della sintassi delle shell
Nomi o percorsi assoluti di file eseguibili
Un argomento è un'informazione richiesta da un comando o da un'applicazione per essere eseguita correttamente. Ad esempio, si consideri la riga di comando usata per aprire un file nell'Editor di testo:
dtpad nomefile
In questo comando, nomefile è un argomento del comando dtpad.
Come i comandi e le applicazioni, anche le azioni possono avere argomenti. Un'azione COMMAND può usare due tipi di dati:
File
Stringhe
Le stringhe di esecuzione vengono eseguite direttamente, non attraverso una shell. È possibile, tuttavia, specificare una stringa che preveda l'uso di una shell.
Ad esempio:
EXEC_STRING \ /bin/sh -c \ 'tar -tvf %(File)Arg_1% 2>&1 | \${PAGER:-more};\ echo "\\n*** Scegliere Chiudi per uscire ***"'
Se l'applicazione si trova in una directory inclusa nella variabile PATH si può usare semplicemente il nome del file eseguibile. Se si trova in un'altra posizione occorre specificare il percorso assoluto dell'eseguibile.
Usare per l'EXEC_STRING la stessa sintassi richiesta per avviare l'applicazione da una riga di comando.
Questa stringa di esecuzione fa parte di un'azione che avvia il client X xcutsel.
EXEC_STRING xcutsel
Questa stringa di esecuzione avvia il client xclock come orologio digitale. La riga di comando include un'opzione ma non richiede argomenti.
EXEC_STRING xclock -digital
Specificare l'argomento usando la seguente sintassi:
%Arg_n%
oppure
%(File)Arg_n%
Il componente (File) è opzionale, poiché nell'impostazione predefinita gli argomenti forniti ad Arg_n vengono interpretati automaticamente come file. Per informazioni sull'uso della sintassi %(String)Arg_n%, vedere Interpretazione di un argomento file come stringa.
Questa sintassi permette di rilasciare un file di dati sull'icona dell'azione per avviare l'azione usando quel file come argomento. Essa sostituisce l'argomento n nella riga comandi. Il file può essere sia locale che remoto.
Questa stringa di esecuzione esegue il comando wc -w usando un file rilasciato come parametro -load.
EXEC_STRING wc -w %Arg_1%
Questo esempio mostra una parte della definizione di un'azione che accetta solo directory come argomenti. Rilasciando una directory sull'icona dell'azione, viene visualizzato l'elenco di tutti i file della directory che possiedono le autorizzazioni di lettura e scrittura.
ACTION Elenco_file_scrivibili { ARG_TYPE FOLDER EXEC_STRING /bin/sh -c 's -l %Arg_1% | grep rw-' … }
Inserire la richiesta dell'argomento nella stringa di esecuzione usando la seguente sintassi:
%(File)"prompt"%
Questa sintassi crea un'azione che chiede di specificare il nome di un file quando l'utente fa doppio clic sull'icona.
Ad esempio, questa stringa di esecuzione visualizza una finestra di dialogo che richiede un argomento per il comando wc -w:
EXEC_STRING wc -w %(File)"Contare le parole del file:"%
Inserire la richiesta dell'argomento nella stringa di esecuzione usando la seguente sintassi:
%Arg_n"prompt"%
oppure
%(File)Arg_n"prompt"%
Questa sintassi produce un'azione che:
Accetta come argomento un file rilasciato sull'icona dell'azione.
Visualizza una finestra di dialogo che chiede di specificare il nome di un file quando l'utente fa doppio clic sull'icona.
Ad esempio, questa stringa di esecuzione esegue il comando lp -oraw sul file rilasciato sull'icona dell'azione. Se l'azione viene avviata facendo doppio clic sull'icona, compare una finestra di dialogo che chiede di inserire il nome del file.
EXEC_STRING lp -oraw %Arg_1"File da stampare:"%
Per specificare un parametro diverso da un file, usare la sintassi:
%"prompt"%
oppure
%(String)"prompt"%
Il componente (String) è opzionale, poiché nell'impostazione predefinita il testo tra virgolette viene interpretato automaticamente come una stringa. Questa sintassi visualizza una finestra di dialogo che richiede un parametro diverso da un file; non usare questa sintassi per richiedere il nome di un file.
Ad esempio, questa stringa di esecuzione esegue il comando xwd e richiede di aggiungere un valore ad ogni pixel:
EXEC_STRING xwd -add %"Aggiungere valore:"% -out %Arg_1"Nomefile:"%
Usare per l'argomento la seguente sintassi:
%(String)Arg_n%
Ad esempio, questa stringa di esecuzione stampa un file usando come intestazione il nome del file con il comando lp -t intestazione nomefile.
EXEC_STRING lp -t%(String)Arg_1% %(File)Arg_1"File da stampare:"%
Specificare l'uso della shell nella stringa di esecuzione:
/bin/sh -c 'comando' /bin/ksh -c 'comando' /bin/csh -c 'comando'
Questa stringa di esecuzione produce un'azione che utilizza il piping di una shell.
EXEC_STRING /bin/sh -c 'ps | lp'
La stringa di esecuzione seguente è più complessa, poiché richiede l'uso di una shell ed accetta un file come argomento.
EXEC_STRING /bin/sh -c 'tbl %Arg_1"Pagina man:"% | troff -man'
Questa stringa di esecuzione richiede come argomento un file in formato compresso. L'azione decomprime il file e lo stampa usando lp -oraw.
EXEC_STRING /bin/sh -c 'cat %Arg_1 "File da stampare:"% | \ uncompress | lp -oraw'
Questa stringa di esecuzione esegue uno script di una shell.
EXEC_STRING /usr/local/bin/StartGnuClient
Le azioni possono gestire più file specificati come argomenti in tre modi:
L'azione viene ripetuta per ogni argomento. Quando l'EXEC_STRING specifica un unico argomento e l'utente rilascia un gruppo di due o più file sull'icona dell'azione, l'azione viene eseguita separatamente per ognuno dei file accettati come argomenti.
Ad esempio, se vengono forniti più argomenti per un'azione con la seguente definizione:
ACTION Visualizza_Immagine { EXEC_STRING xwud -in %Arg_1% … }
l'azione Visualizza_Immagine verrà ripetuta per ogni file.
L'azione può usare due o più argomenti non intercambiabili. Ad esempio, l'azione:
xsetroot -cursor filecursore filemaschera
richiede due file diversi in un ordine specifico.
L'azione può eseguire lo stesso comando sull'insieme dei file specificati come argomento. Ad esempio, l'azione:
pr file [file …]
stamperà uno o più file in un unico lavoro di stampa.
Usare una delle seguenti sintassi:
Per fare in modo che l'azione richieda i nomi dei file, usare questa sintassi per ognuno degli argomenti:
%(File)"prompt"%
Usare una stringa di prompt diversa per ogni argomento.
Ad esempio, questa stringa di esecuzione richiede due file.
EXEC_STRING xsetroot -cursor %(File)"Bitmap del cursore:"% \ %(File)"Bitmap della maschera:"%
Per fare in modo che l'azione accetti il rilascio dei file, usare questa sintassi per ognuno degli argomenti:
%Arg_n%
usando valori diversi di n per ogni argomento. Ad esempio:
EXEC_STRING diff %Arg_1% %Arg_2%
Usare una delle seguenti sintassi:
Per creare un'azione che accetti il rilascio dei file ed esegua un comando nella forma comando file 1 file 2 …, usare questa sintassi per i file di argomento:
%Args%
Per creare un'azione che accetti il rilascio di due o più file, o che facendo doppio clic sull'icona visualizzi una richiesta per un singolo file, usare questa sintassi per gli argomenti:
%Arg_1"prompt"% %Args%
L'azione eseguirà il comando nella forma: comando file 1 file 2 ….
Questa stringa di esecuzione crea un'azione che esegue il comando
pr file 1 file 2
accettando più file come argomenti.
EXEC_STRING pr %Args%
Questa stringa di esecuzione crea un'azione simile a quella dell'esempio precedente, ma in questo caso facendo doppio clic sull'icona (senza specificare argomenti) viene visualizzata una richiesta.
EXEC_STRING pr %Arg_1"File da stampare:"% %Args%
Per fare in modo che l'azione accetti il rilascio di più file ed esegua un comando nella forma:
comando file 1 file 2 …
usare la sintassi:
%Args%
Questa stringa di esecuzione esegue uno script di nome Controllo su più file:
EXEC_STRING /usr/local/bin/Controllo \ %Arg_1"File da controllare:"% %Args%