COMMAND 操作至少需要两个字段—ACTION 和 EXEC_STRING。
ACTION action_name { EXEC_STRINGexecution_string }
执行字符串是 COMMAND 操作定义中最重要的部分。它使用的语法与在“终端”窗口内执行的命令行相似,但包含了用于处理文件和字符串变量的附加语法。
执行字符串可能包括:
文件和非文件变量
shell 语法
可执行文件的绝对路径或名称
变量是命令或应用程序正确运行所需要的信息。例如,考虑可用于在“文本编辑器”中打开文件的命令:
dtpadfilename
在该命令中,filename 是 dtpad 命令的文件变量。
象应用程序和命令一样,操作也可以有变量。COMMAND 操作可以使用两种类型的数据:
文件
字符串数据
执行字符串不经过 shell 就直接执行。但是,也可以明确地在执行字符串中调用 shell。
例如:
EXEC_STRING \ /bin/sh -c \ 'tar -tvf% (File)Arg_1% 2>&1 | \${PAGER:-more;\ echo “\\n*** Select Close from the Window menu to close ***”'
如果应用程序位于 PATH 变量所列的目录之中,则可以使用简单的可执行文件名。如果应用程序在别处,则必须使用可执行文件的绝对路径。
从命令行启动应用程序,使用相同的 EXEC_STRING 语法。
文件变量使用如下语法:
%Arg_n%
或
%(File)Arg_n%
(File) 是可选项,因为 Arg_n 提供的变量 (缺省) 假定为文件。(请参见将文件变量解释成字符串 ,以获得% (String)Arg_n% 语法的使用方法。)
该语法使用户可以通过在操作图标上拉放数据文件对象来启动带有该文件变量的操作。它将第 n 个变量替代到命令行中。拉放文件可以是本地文件或远程文件。
下例所显示的是仅用目录变量工作的操作的定义的一部分。当目录被拉放在操作图标上时,该操作将该目录内所有有读写许可的文件列表显示出来。
ACTION List_Writable_Files { ARG_TYPE FOLDER EXEC_STRING /bin/sh -c 's -l%Arg _1% | grep rw-' … }
文件变量使用如下语法:
%(File) "提示"%
该语法创建了一个操作,该操作在用户双击操作图标时显示提示输入文件名。
例如,下面的执行字符串显示对话框,提示输入 wc -w 命令的文件变量:
EXEC_STRING wc -w% (File)"Count words in file:"%
文件变量使用如下语法:
%Arg_n"提示"%
或
%(File)Arg_n"提示"%
该语法产生的操作:
接受拉放文件作为文件变量。
用户双击操作图标时显示对话框,提示输入文件名。
例如,下面的执行字符串在拉放文件上执行 lp -oraw 操作。如果操作由双击图标启动,则出现对话框提示输入文件名。
EXEC_STRING lp -oraw%Arg _1"File to print:"%
对非文件变量使用如下语法:
%"提示"%
或
%(String) "提示"%
由于缺省情况下,引号内的文本被解释为字符串,所以 (String)是可选项。该语法显示对话框,提示输入非文件数据;如果提示输入文件名就不能用该语法。
例如,下面的执行字符串运行 xwd 命令,并提示要增加到每个像素的值:
EXEC_STRING xwd -add% "增加值:"% -out%Arg _1"文件名:"%
变量使用如下语法:
%(String)Arg_n%
例如,下面的执行字符串用于打印具有包含文件名标题的文件,所用命令为 lp-t 标题文件名。
EXEC_STRING lp -t%(String)Arg_1%% (File)Arg_1"File to print:"%
在执行字符串中指定 shell:
/bin/sh -c 'command' /bin/ksh -c 'command' /bin/csh -c 'command'
下面的执行字符串要求变量为压缩文件。此操作解压缩文件并用 lp -oraw 打印该文件。
EXEC_STRING /bin/sh -c 'cat%Arg _1 "要打印的文件:"% | \ uncompress | lp -oraw'
操作有三种处理多文件变量的方法:
该操作可以重复运行,每一变量执行一次。当 EXEC_STRING 包含单个文件变量,而且通过在操作图标上拉放多个文件来提供多文件变量时,则对每个文件变量分别运行此操作。
例如,如果为下面的操作定义提供多文件变量,则:
ACTION DisplayScreenImage { EXEC_STRING xwud -in%Arg _1% … }
DisplayScreenImage 操作被重复运行。
采用下面的语法惯例之一:
如果需要操作来提示输入文件名,则每个文件变量均使用如下语法:
%(File) "提示"%
对每个变量使用不同的提示字符串。
例如,下面的执行字符串提示输入两个文件。
EXEC_STRING xsetroot -cursor% (File)"光标位图:"% \ %(File)"掩码位图:"%
采用下面的语法惯例之一:
要接受多重拉放文件变量并以下面的形式执行命令行:
command file 1 file 2 …
使用如下语法:
%Args%