인수 및 옵션의 의미 변경에 대한 혼란, 공식 표준 정의가 있습니까?


11

나는 명령 구문과 관련된 옵션과 인수가 무엇인지 이해하는 데 혼란을 겪었습니다.

예를 들어 다음과 같은 정의가 발생했습니다.

  • command -a -b -c d e f

    일부는 -a -b -c옵션 또는 스위치 d e f라고하고 인수를 호출하여 다릅니다 .

  • command -a -b -c d e f

    예를 들어 bash매뉴얼과 같은 일부 는 모든 -a -b -c d e f인수를 호출 하고 스크립트에서 모두 인수 할 수 있다고 설명합니다 $1 $2 $3 $4 $5 $6.

  • command -a b=c

    일부 -a는 옵션, b인수 및 c값을 호출 하지만, 다른 하나는 모든 -a b c인수를 호출하는 하나의 다양성에서 처음 두 점에서와 같이 혼합합니다 .

이 세 가지 버전은 다양한 종류의 호출에 대한 예일 뿐이며, 모두 나열하는 방법조차 모르지만 고정 된 명명 규칙이 없다는 것을 알았습니다.

또는 적어도 다른 무작위 소스를 발견했기 때문에 내가 알고있는 표준화 된 명명 규칙이 없지만 공식 Linux 및 GNU 관련 사이트 또는 매뉴얼 에서도이 불일치를 충족시킬 수 있습니다.

내가 말할 수있는 의심 할만한 공식 명명 체계가 있습니까?


두 번째 형태는 자체 관점에서 100 % 정확합니다. 상황이 매우 중요합니다.
Oskar Skog

답변:


18

POSIX 표준의 "유틸리티 인수 구문"섹션 에서 채택되었습니다 .

utility_name [-a] [-b] [-c option_argument]
             [-d|-e] [-f[option_argument]] [operand...]

예제의 유틸리티 이름은 utility_name입니다. 그 다음에는 options , option-argumentsoperands가 있습니다.

구성 인자 -문자와 같은 단일 문자 또는 숫자는 a,로 알려져 있습니다 옵션 (또는, 역사적, 플래그 ). 로 표시된 것처럼 특정 옵션 뒤에 option-argument[-c option_argument]있습니다. 마지막 옵션 및 옵션 인수 뒤에 나오는 인수는 operands 라고 합니다 .

이 표준은 또한 "인수"를 다음과 같이 정의합니다.

쉘 명령 언어에서 매개 변수 argvexec함수 중 하나에 의해 작성된 배열 의 단일 문자열과 동등한 것으로 유틸리티에 전달됩니다 . 인수는 명령 이름 뒤에 오는 옵션, 옵션 인수 또는 피연산자 중 하나입니다.


utility_name명령 행에있는 모든 것은 유틸리티의 arguments 이며 쉘 스크립트 인 경우 위치 매개 변수 에 모두 표시됩니다 . option, option-argument 및 operand라는 용어는 명령 줄에서 이러한 인수에 대한보다 구체적인 이름입니다.

"플래그"및 "스위치"는 "옵션"의 일반적인 동의어입니다.

의 경우

utility -a b=c
  • -a그리고 b=c논쟁입니다
  • -a유틸리티가 유틸리티를 인식하는 경우 옵션입니다 ( ln유틸리티에는 -x옵션 이 없으므로 엄격하게 말해서 진단 메시지를 트리거 할 수있는 -x옵션이 아닙니다 ).lnln -x
  • b=c옵션 인수 인 경우-a 옵션이 인수를 취 그렇지 않으면 피연산자입니다,
  • b하고 c있습니다 하지 자체 옵션, 옵션 - 인수하지 피연산자.

위의 텍스트에서 알 수 있듯이 (유틸리티 설명서에서 제공하는) 유틸리티 개요 에서 작업 하는 것이 명령 행에 입력 된 일반 명령을 디코딩하는 것보다 쉬웠을 것입니다. 매뉴얼에는 옵션 인수에 필요한 옵션과 피연산자 등의 인수가 명확하게 명시되어 있습니다.

c"값" 을 부르는 것은 완벽하게 괜찮습니다. 표준화 된 것은 아니지만 "" cb " 에 주어진 값 이라고 말하면 오해하는 사람은 거의 없습니다 . 해당 유틸리티의 맥락에서 분명합니다.

예를 들어

$ awk -v var="d" '...' data.in

에 대해 알고있는 누군가 awk그 말을 -v var="d"수단 " 변수 값 할당 명령 행을 ".awkvard

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.