공급업체 확장에 "-W"가 예약된 이유는 무엇입니까?

공급업체 확장에 "-W"가 예약된 이유는 무엇입니까?

POSIX 표준이 필요한 이유-W공급업체 확장을 유지 하는 옵션시스템 유틸리티? 왜 "W"라는 문자가 사용되었는지 이해가 되지 않습니다. 'V'(의 경우Vendor)가 더 의미가 있을 수도 있습니다.

아마도 이 질문은 Retrocomputing SE로 옮겨야 할 것 같습니다.

답변1

이 조항은단일 유닉스 v2(1997) 및단일 유닉스 v3(2001). 이는 진공 상태에서 수행되는 것이 아니라 이전 규범과 기존 관행을 고려해야 합니다. 일부 명령에 문자가 이미 할당된 경우 기존 명령은 상속되어야 하며 이 지침을 따를 수 없습니다. 특정 문자가 POSIX에서 지정되지 않은 인기 있는 프로그램이나 POSIX 프로그램의 인기 있는 구현에서 이미 사용되고 있는 경우 나중에 해당 유틸리티를 지정하기가 더 어려워지고 사용자가 다음 문자를 기억하기가 더 어려워집니다. 의미는 비슷하지만 명령 옵션에 따라 문자가 다릅니다.

SUSv2에 문서화된 옵션을 확인하세요.

grep -h -Po '(?<=^<dt><b>-)[[:alnum:]]' /usr/share/doc/susv2/susv2/xcu/*.html | sort | uniq -c

대부분의 대문자와 마찬가지로 모든 소문자도 하나 이상의 유틸리티로 채워져 있음을 알 수 있습니다. 무료 문자는 , -B및 입니다 .-J-K-Y-Z

-V두 가지 명령에서만 작동합니다.

  • command의 변형 입니다 -v(추가됨 - 누가 처음에 추가했는지는 알 수 없습니다. 아마도 Unix 사양 작업 그룹이나 ksh 중 하나일 것입니다. 원래 정의가 만족스럽지 않았기 때문입니다 ).-v
  • dis, 여기서 인쇄 유틸리티의 버전을 선택할 수 있습니다.

POSIX는 공급업체를 선택할 수 있지만 -V이는 command지침을 따르지 않음을 의미합니다. 이는 이식성을 위해 만들어졌기 때문에 성가신 일이 될 수 있습니다 command(둘 다 그 동작이 쉘 내장과 외부 유틸리티 간의 차이점을 방지하고 유사하게 작동 type하지만 출력 형식의 가변성이 없기 때문입니다). 더욱이 이 프로그램은 "버전"을 위한 dis유일한 프로그램과는 거리가 멀습니다 -V(대부분은 기본 시스템의 일부가 아니기 때문에 POSIX로 인코딩되지 않습니다. 기본 시스템의 경우 기본 시스템의 버전 ​​번호를 사용하면 됩니다. 따라서 -VPOSIX 내부와 외부 모두에서 예외가 너무 많아 나쁜 선택이 될 수 없습니다.

-W방금 찍은cc. cc구현은 공급업체 간에 크게 다른 경향이 있었으며(특히 예상했던 C 방언과 관련하여) 표준의 향후 버전에서 제거되었습니다( 등으로 대체됨 c89) c99. 새로운 의미를 cc부여한다고 해서 -W표준 유틸리티가 배제되는 것은 아닙니다. 표준의 다음 버전에는 더 이상 해당 의미가 없기 때문입니다 . 내가 아는 한, 이는 POSIX가 아닌 유틸리티에서 특별히 일반적인 옵션 문자 선택이 아니므로 선택 사항입니다.

-W전혀 사용되지 않는 또 다른 대문자는 어떻 습니까? 확실하지는 않습니다. 임의적일 수도 있지만 갑자기 나타나는 것은 아닙니다. 옵션 은 멀티플렉싱을 허용하는 특정 구조를 가져야 하는 -W매개변수를 통해 인코딩됩니다 cc. 옵션이 적용되는 "하위 도메인"(컴파일 단계)을 지정하는 문자로 시작해야 하며 그 뒤에 "하위 도메인별" 옵션이 와야 합니다. POSIX.1-2001은 구현별 옵션에 대해 하나의 문자만 남기므로 여러 구현별 동작 변경을 허용하려면 이 문자를 재사용해야 합니다. 따라서 -W옵션이 사용되는 cc방법에 대한 구현별 영감이 있습니다. -W정확한 구문이 반드시 필요한 것은 아니지만 일종의 "하위 옵션"을 나타내는 접두사가 있는 인수를 취하는 기본 원칙입니다.

답변2

v일반적 version으로 또는 사용자는 verbose스위치에 과부하를 걸 수 없습니다. 이는 AT&T/BSD가 유일한 버전이던 시절이자 상용화되기 전의 일이었습니다. 다른 스위치도 사용중이라 꽤 많이 사용가능합니다.

관련 정보