숏옵션과 롱옵션의 차이가 그냥 "-" 인가요?

숏옵션과 롱옵션의 차이가 그냥 "-" 인가요?

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&Tgetopt()1983년에서 1984년 사이에 도입되었지만 getopt()1989년에 내장된 Bourne Shell에 대한 추가 네 번째 전역 변수가 도입되기 전에는 재진입이 불가능했습니다 getopts.

POSIX구현은 대시 testfind

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 Shellgetopts(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

관련 정보