Unix
시스템 에서 option으로 시작하는 옵션은 -
짧은 옵션이고 option으로 시작하는 옵션은 --
긴 옵션입니다. 내 이해가 맞나요?
답변1
이는 GNU 코딩 표준의 일부이므로 모든 GNU(및 많은 비 GNU) 소프트웨어가 이를 따릅니다. 그러나 이는 결코 절대적인 표준은 아닙니다. 이를 달성하는 다른 방법은 다음과 같습니다.
-Wlong-option
: C 컴파일러에서 파생되었으며 POSIX에서 지정되었습니다.-long-option
(예: 단일 대시): 짧은 옵션이 없는 대부분의 앱에서 지원됩니다(일반적으로 이중 대시 버전의 대안으로).+long-option
: 이것은 더 이상 사용되지 않지만 짧은 옵션에는 대시를 유지하고 긴 옵션에는 플러스를 유지하는 일부 오래된 패키지가 있습니다. 오늘날에는 많이 사용되지 않습니다. 주로 대부분의 getopt() 구현이 이를 지원하지 않기 때문입니다.long-option
: 아쉽게도 헷갈리는 앱도 있어요옵션그리고논쟁. 나는 MegaCLI가 범인 중 하나라고 생각합니다(어쨌든 거의 모든 면에서 범인입니다).
답변2
이 --long-opt
접근 방식은 1990년경 GNUism에 의해 시작되었습니다.
Multics
-long
단일 대시 옵션을 사용하여 Multics 프로젝트가 1960년대에 시작되었습니다.
UNOS
최초의 UNIX
클론(1980년 전 AT&T 직원 그룹에 의해 시작) 이었고 1982년 4월에 UNOS
범용 옵션 파서(세계 최초 UNIX
)를 출시했습니다. 옵션 파서는 -long
단일 대시가 있는 옵션을 지원합니다.
AT&T
getopt()
1983년에서 1984년 사이에 도입되었지만 getopt()
1989년에 내장된 Bourne Shell에 대한 추가 네 번째 전역 변수가 도입되기 전에는 재진입이 불가능했습니다 getopts
.
POSIX
구현은 대시 test
와find
AT&T UNIX
-long
단일 대시를 사용하는 옵션은 kill -INT <pid>
1983 년경에 도입되었습니다 .
tar
그리고 이 용어는 문서에서 전혀 사용 ar
되지 않고 option
대신 keyletter
. 나중에 구현자는 무시된 키 문자에 대한 지원을 추가하여 -
CLI가 다른 UNIX 명령처럼 보일 수 있다는 인상을 주었습니다.
dd
자체 옵션 모델을 사용하지만, 이 옵션 모델은 장기 UNOS
옵션을 다음과 같이 정의하는 장기 옵션 모델과 호환됩니다.
-long
-long arg
long=arg
-long=arg
long= arg
-long= arg
옵션 UNOS
구문 분석기는 정수 및 부울 인수의 자동 변환을 허용하고 필요에 따라 모든 옵션에 대해 콜백 함수를 구현할 수 있는 형식 문자열을 사용하기 때문에 GNU longopt 구현보다 우수합니다. 콜백 함수 인터페이스로 인해 매개변수 목록을 재정렬할 필요가 없습니다.
Solaris 구현에서는 2004년부터 짧은 옵션에 대한 별칭으로 긴 옵션을 지원했지만 도입 이후 via를 통해 사용할 수 getopt()
있었지만 실제로 문서화되지는 않았습니다 .Bourne Shell
getopts(1)
Schily Bourne Shell
이 기능은 문서화 되어 있으며 , getopt()
긴 옵션이 짧은 옵션에 대한 별칭 이상이 될 수 있도록 하고 단일 대시 긴 옵션도 허용하도록 추가 개선 사항이 도입되었습니다.
바라보다http://schillix.sourceforge.net/man/man1/bosh.1.html내장 명령 섹션에서getopts.
옵션 파서 아이디어를 기반으로 한 UNOS
현대화되고 향상된 옵션 파서는 schily-tools에 있습니다.libschily/getargs.c
http://sourceforge.net/projects/schilytools/files/
AT&T 코드를 기반으로 하지 않은 schily 유틸리티 프로그램에 사용되며 부적절한 이름으로 옵션을 정의하는 문제를 줄여줍니다.mkisofs