강제성은 없으며, 프로그래머를 위한 지침일 뿐이지만, 이 규약을 알고 있다면, 규약을 지킨 유틸리티를 더 쉽게 사용할 수 있다. 이 규약이 만들어지기 이전부터 있던 솔라리스에 번들된 유틸리티는 이 규약을 지키지 않은 것도 있다.
유틸리티의 이름은 2자 이상 9자 이하이어야 한다.
유틸리티의 이름은 소문자를 포함하고 있어야 한다.
각각의 옵션명은 영문/숫자로 1자이어야 한다. -W는 벤더별 옵션으로 사용한다. 1)
모든 옵션은 대시(-)로 시작한다.
옵션인자가 없는 옵션은 -으로 그룹화 해서 사용할 수 있다. (예를 들어 ls -a -l과 ls -al이 같다)
각 옵션과 옵션인자는 공백문자로 구분되어야 한다.
옵션인자(option arguments, 옵션의 인자, cc -o abc abc.c에서, abc 가 -o 옵션의 옵션인자에 해당된다)는 옵션을 사용한다면 반드시 입력해야 한다.
옵션에 대해 두개 이상의 옵션인자가 필요하다면 각 옵션인자는 콤마(,)나 공백 문자( )로 옵션 안에서 구분할 수 있도록 해야 한다.
모든 옵션은 명령라인에서 피연산자(operand) 앞에 사용되어야 한다.
-- 는 옵션의 끝을 의미한다. -- 뒤에 나오는 -로 시작하는 오퍼랜드를 더이상 옵션으로 인식하지 않는다. (ls -l -- -a명령은 -a라는 파일을 -l 형식으로 출력하라는 의미다)
옵션의 순서는 상관 없이 정하지만, 옵션인자의 입력은 프로그램의 특성상 순서가 중요할 수 있다. 먼저 입력한 옵션인자를 먼저 처리한다. (make -f makefile1.mk -f makefile2.mk all와 같은 명령에서 makefile1.mk를 makefile2.mk보다 먼저 처리해야 한다는 의미다)
오퍼랜드의 순서에 대한 의미는 프로그램의 특성을 따른다. (cp a b명령은 오퍼랜드의 순서가 중요하다)
파일을 의미하는 오퍼랜드 또는 옵션인자에서 -는 stdin 또는 stdout을 의미한다.
1) 같은 유틸리티를 다른 유닉스에 포팅할 때, 특정한 유닉스를 위한 전용 옵션은 -W으로 시작하라는 의미다. 비슷한 의미를 가진 옵션으로 -X가 있는데 실험적 옵션 또는 비 표준 옵션을 의미한다.
셸 스크립트에서도 getopt 를 사용하기 위한 getopt(1) 에 대해 소개한다. 사용방법은 getopt와 비슷하다.
getopt.sh
(316 바이트)
#!/bin/bash
GETOPT=`/usr/bin/getopt abo: $*`
if [ $? != 0 ]; then
echo
echo USEAGE: $0 [-ab][-o OARG]
echo
exit 2
fi
set -- "$GETOPT"
FLAG=""
OARG=""
for i in $*
do
case $i in
-a | -b)
FLAG=$i; shift ;;
-o)
OARG=$2; shift 2 ;;
--)
shift; break ;;
esac
done
echo "FLAG=$FLAG"
echo "OARG=$OARG"
gettext
gettext는 LC_MESSAGES 로케일에 의해 메시지를 얻어오는 함수다. 주로 다국어 지원(i18n, l10n)을 위해 사용한다. getopt 와 함께 자주 사용되는 함수다. 솔라리스의 gettext 는 GNU gettext와 호환된다. (GNU gettext보다 솔라리스의 gettext가 더 먼저 나왔다. History of gettext() et al?을 읽어보자) 이 함수는 gettxt(3c)와는 다른 함수다.