COMMAND 활동에 대한 최소 요건은 두 개의 필드-ACTION 및EXEC_STRING입니다.
ACTION action_name { EXEC_STRING execution_string }
실행 문자열은 COMMAND 활동 정의에서 가장 중요한 부분으로서, 터미널 윈도우에서 실행되는 구문과 비슷하지만 파일과 문자열 인수를 취급하기 위한 추가 구문이 있습니다.
실행 문자열에는 다음이 포함될 수도 있습니다.
파일 및 비파일 인수
셸 구문
절대 경로 또는 실행 파일의 이름
인수는 명령 또는 응용 프로그램을 제대로 실행하는 데 필요한 정보입니다. 예를 들면 문서 편집기에서 파일을 열기 위해 사용하는 명령 행을 가정하십시오.
dtpad filename
이 명령에서 filename은 dtpad 명령의 파일 인수입니다.
활동은 응용 프로그램이나 명령과 마찬가지로 인수를 가질 수 있습니다. COMMAND 활동이 사용할 수 있는 데이터 유형에는 두 가지가 있습니다.
파일
문자열 데이터
실행 문자열은 셸을 통해서보다는 직접 실행됩니다. 그러나 실행 문자열에서 명시적으로 셸을 호출할 수 있습니다.
예를 들면 다음과 같습니다.
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에 대해 사용하십시오.
이 실행 문자열은 클라이언트 xclock을 디지털 시계로 시작합니다. 명령 행은 명령 행 옵션을 포함하지만 인수는 필요하지 않습니다.
EXEC_STRING xclock -digital
파일 인수에 대해 다음 구문을 사용하십시오.
%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)"prompt"%
이 구문은 사용자가 활동 아이콘을 두 번 눌렀을 때 파일 이름에 대해 프롬프트를 표시하는 활동을 작성합니다.
예를 들면, 이 실행 문자열은 wc -w 명령의 파일 인수에 대한 프롬프트를 표시하는 대화 상자를 표시합니다.
EXEC_STRING wc -w% (File)"Count words in file:"%
파일 인수에 대해 다음 구문을 사용하십시오.
%Arg_n"prompt"%
또는
%(File)Arg_n"prompt"%
이 구문은 다음을 수행하는 활동을 작성합니다.
갖다 놓은 파일을 파일 인수로 승인
사용자가 활동 아이콘을 두 번 누를 때 파일 이름에 대해 프롬프트를 표시하는 대화 상자 표시
예를 들면, 다음 실행 문자열은 갖다 놓은 파일에 대해 lp-oraw를 수행합니다. 아이콘을 두 번 눌러 활동이 시작되면, 파일 이름에 대해 프롬프트를 표시하는 대화 상자가 나타납니다.
EXEC_STRING lp -oraw%Arg _1"File to print:"%
비파일 매개변수에 대해 다음 구문을 사용하십시오.
%"prompt"%
또는
%(String)"prompt"%
(String)은 선택사항입니다. 인용된 텍스트가 기본적으로 문자열 데이터로 해석되기 때문입니다. 이 구문은 비파일 데이터에 대해 프롬프트를 표시하는 대화 상자를 표시합니다. 파일 이름에 대한 프롬프트를 표시할 때는 이 구문을 사용하지 마십시오.
예를 들면, 다음 실행 문자열은 xwd 명령을 실행하고 각 픽셀에 추가될 값에 대한 프롬프트를 표시합니다.
EXEC_STRING xwd -add% "Add value:"% -out%Arg _1"Filename:"%
인수에 대해 다음 구문을 사용하십시오.
%(String)Arg_n%
예를 들면, 다음 실행 문자열은 명령 lp -tbanner filename 을 사용하여 파일 이름을 포함하는 표제와 함께 파일을 인쇄합니다.
EXEC_STRING lp -t%(String)Arg_1%% (File)Arg_1"File to print:"%
실행 문자열에서 셸을 지정하십시오.
/bin/sh -c 'command ' /bin/ksh -c 'command ' /bin/csh -c 'command'
다음은 셸 처리를 요구하고 파일 인수를 허용하는 더 복잡한 실행 문자열입니다.
EXEC_STRING /bin/sh -c 'tbl%Arg _1"Man Page:"% | troff -man'
이 실행 문자열은 인수가 압축 파일일 것을 요구합니다. 활동은 파일의 압축을 풀고 lp -oraw를 사용하여 파일을 인쇄합니다.
EXEC_STRING /bin/sh -c 'cat%Arg _1 "File to print:"% | \ uncompress | lp -oraw'
활동이 복수 파일 인수를 처리하는 방법은 세 가지입니다.
활동은 각 인수에 대해 한 번씩, 반복적으로 실행할 수 있습니다. EXEC_STRING이 단일 파일 인수를 포함하고 있고, 복수 파일 인수는 활동 아이콘에 복수 파일을 갖다 놓는 방식으로 제공될 때, 활동은 각 파일 인수에 대해 따로 실행됩니다.
예를 들면 복수 파일 인수가 다음 활동 정의에 제공되는 경우,
ACTION DisplayScreenImage { EXEC_STRING xwud -in%Arg _1% ... }
DisplayScreenImage 활동이 반복해서 실행됩니다.
활동은 두 개 이상의 교환할 수 없는 파일 인수를 사용할 수 있습니다. 그 예는 다음과 같습니다.
xsetroot -cursor cursorfile maskfile
위 예에서는 두 개의 서로 다른 파일을 특정 순서로 필요로 합니다.
활동은 각 파일 인수에 대해 같은 명령을 연달아 수행할 수 있습니다. 예를 들면 다음 활동은,
pr file [file ...]
하나 또는 여러 개의 파일을 한 인쇄 작업에서 인쇄합니다.
다음 구문 규약 중 하나를 사용하십시오.
활동이 파일 이름에 대한 프롬프트를 표시하게 하려면, 각 파일 인수에 대해 다음 구문을 사용하십시오.
%(File)"prompt"%
각 인수에 대해 서로 다른 prompt 문자열을 사용하십시오.
예를 들면, 이 실행 문자열은 두 파일에 대한 프롬프트를 표시합니다.
EXEC_STRING xsetroot -cursor% (File)"Cursor bitmap:"% \ %(File)"Mask bitmap:"%
갖다 놓은 파일을 승인하려면 각 파일 인수에 대해 다음 구문을 사용하십시오.
%Arg _n%
각 인수에 대해 서로 다른 값의 n을 사용하십시오. 예를 들면 다음과 같습니다.
EXEC_STRING diff%Arg _1%%Arg _2%
다음 구문 규약 중 하나를 사용하십시오.
여러 개의 갖다 놓은 파일을 허용하거나, 두 번 눌렀을 때 한 파일에 대한 프롬프트를 표시하는 활동을 작성하려면, 파일 인수에 대해 다음 구문을 사용하십시오.
%Arg_1"prompt"%%Args%
활동은 command file 1 file 2 ... 형태로 명령을 발행할 것입니다.
다음 실행 문자열은 활동을 두 번 눌렀을 때(파일 인수가 없음) 프롬프트를 표시한다는 점을 제외하고는 앞의 예와 유사한 활동을 작성합니다.
EXEC_STRING pr%Arg _1"File(s) to print:"%%Args%
여러 개의 갖다 놓은 파일 인수를 승인하고 다음 형태로 명령 행을 실행하려면,
command file 1 file 2 ...
다음 구문을 사용하십시오.
%Args%
다음 실행 문자열은 복수 파일에 대해 이름이 Checkout인 스크립트를 실행합니다.
EXEC_STRING /usr/local/bin/Checkout \ %Arg_1"Check out what file?"%%Args%