유틸리티의 피연산자는 항상 유틸리티의 모든 옵션 뒤에 나타나야 합니까?

유틸리티의 피연산자는 항상 유틸리티의 모든 옵션 뒤에 나타나야 합니까?

POSIX 라고

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

...마지막 옵션과 옵션 인수 뒤에 오는 인수의 이름은 "피연산자"입니다.

이는 POSIX 표준에 따라 유틸리티의 피연산자가 항상 유틸리티의 모든 옵션 뒤에 나타나야 한다는 의미입니까?

일부 명령이나 유틸리티는 규칙을 따르지 않는 반면 다른 명령이나 유틸리티에서는 오류가 발생하는 이유는 무엇입니까? 예를 들어:

  1. 맨페이지에서 ls:

    SYNOPSIS
           ls [OPTION]... [FILE]...
    

    그것은 [FILE]...지금 나타난다 [OPTION]....

    하지만 피연산자가 옵션 앞에 나타날 수도 있는 것 같습니다. 예를 들어 다음 ls . -a과 같이 작동합니다.ls -a .

  2. bash 내장의 경우 read피연산자 뒤에 옵션을 지정하면 오류가 발생합니다.

    $ read tt -u 5 5 < /tmp/tt
    bash: read: `-u': not a valid identifier 
    $ read -u 5  tt 5</tmp/tt 
    $ echo $tt 
    1 2 3 4 5
    

답변1

예, 프로그램의 이식성을 높이고 싶다면 가능합니다.

옵션이 매개변수의 어느 위치에나 나타나도록 허용하는 것은GNU 특정.

어떤 경우든 항상 --옵션의 끝을 로 표현할 수 있으며 그 뒤에 오는 모든 항목은 --피연산자로 처리됩니다.

답변2

제목 질문에 답하십시오.

옵션 뒤에 피연산자가 나타나야 합니까?

예.

그들은 항상 이런가요?

아니요.

프로그램이 옵션과 피연산자(일반적으로 인수)를 처리하는 방법은 전적으로 유틸리티 개발자에게 달려 있습니다. 일부 개발자는 몇 가지 일반 규칙을 따르고, 다른 개발자는 다른 일반 규칙을 따릅니다. 가장 일반적인 두 가지 일반 규칙은 GNU 규칙과 POSIX 규칙입니다.

관련 정보