ls -a
(나는-a
옵션을 고려한다)sudo -u username
(-u
=옵션,username
=매개변수)chmod 664 my-dir
(664
=옵션,my-dir
=매개변수)
디렉토리 목록을 볼 때를 제외하고는 "이것은 플래그입니다"라고 말할 수 있는 예를 생각할 수 없습니다.
-r--------. 1 david david 3344 May 19 17:48 611056.pdf
이는 소유자에 대한 "읽기 플래그"를 설정하지만 그 이상은 아닙니다. 내가 그것을 "읽기 옵션"이라고 부르는 것을 막는 이유는 무엇입니까?
저는 주로 DocBook XML로 기술 문서를 작성하고 편집하며, 차이점에 대한 최대한 일관되고 정확한 설명을 찾고 있습니다. 그러나 나는 다음과 같은 패턴이 나타나는 것을 보았습니다.
- 플래그는 부울 값인 경향이 있습니다. 예를 들어,
setenforce 0
- 옵션은 명령의 작동 방식을 정의하는 데 도움이 됩니다. 일부는 선택 사항일 수 있습니다.
- 매개변수는 명령에 어떤 작업을 수행할지 알려줍니다.
플래그와 옵션을 결합하는 모습을 볼 수 있습니다(일부 옵션에는 12개의 가능한 값이 있을 수 있지만 부울에는 2개만 있음). 주장은 그대로 유지하기에 충분히 다른 것 같습니다.
답변1
"옵션", "매개변수" 및 "플래그"라는 용어에는 일관된 정의가 없으며 소프트웨어 개발 분야에는 이들의 사용을 강제할 수 있는 중앙 권한이 없습니다. 이것은 많은 용어에서 발생합니다. 30년 넘게 "디렉토리"라는 단어를 사용한 후에 저는 이제 Microsoft의 새로운 말에 혼란스러워하는 "폴더"라는 단어를 사용하는 사람들을 다루어야 합니다.
용어에 대한 합의된 정의는 프로그래밍에서 다양한 방식으로 도달할 수 있습니다. "매개변수"/"옵션"/"플래그"에 관한 한 프로그래밍 언어의 사양 매뉴얼과 튜토리얼은 공공 도서관에서 사용되는 용어와 마찬가지로 사용법을 적용하는 데 도움이 됩니다.
예를 들어, 명령 뒤에 명령줄에 입력하는 내용을 명령의 "인수"라고 합니다.함수 호출 매개변수, 이는 부분적으로 C 매뉴얼에서 "매개변수"(따라서 argc
및 )라고 불리기 때문일 수 있습니다 argv
. Python argparse
라이브러리는 "매개변수"라는 용어를 강화하는 데도 도움이 됩니다. 그러나 "매개변수"라고 불리는 것도 본 적이 있습니다.
"옵션"이라는 용어는 "옵션"에서 파생되었으며 이는 생략할 수 있음을 의미합니다. C getopt
라이브러리는 이 용어의 한 가지 용도입니다. 그러나 "옵션"이 실제로 선택 사항이 아닌 선례가 있습니다.argparse
매뉴얼에는 "필수 옵션"을 생성할 수 있다고 명시되어 있습니다.(또한 이것이 "일반적으로 나쁜 형식으로 간주됩니다"라고 나와 있지만). 옵션 앞에는 일반적으로 단일 대시( -
) 또는 이중 --
대시( , 긴 옵션)가 붙지만 옵션에서 대시를 사용하도록 요구하거나 강제하지 않는 일부 잘 알려진 명령도 있습니다(예: , tar
및 ps
) dd
. 옵션은 다음과 같습니다.그 자체하나의 인수(예: -w80
and --color=always
)를 사용하거나 경우에 따라 여러 인수를 사용합니다.
내 경험에 따르면 "플래그"는 옵션과 동일하지만 일반적으로 인수 자체를 허용하지 않으며 본질적으로 부울 스위치를 나타냅니다.
더 넓은 관점에서 보면 각 프로그래머는 작업을 수행하고 이름을 지정하는 표준 방법을 찾고 많은 추가 비용 없이 휠을 재창조할 수 있는 옵션을 갖기 때문에 명명은 결코 일관성이 없습니다. 코드를 문서화하고 예제를 통해 단어의 새로운 의미가 명확해지면, 충분한 사람들이 코드에서 해당 단어를 선택하면 해당 이름과 의미가 그대로 유지될 가능성이 높습니다.
답변2
플래그는 부울 유형이고 기본적으로 항상 false인 옵션입니다(예: --verbose, --quiet, --all, --long 등).
옵션 알려주기 기능어떻게인수가 함수에 지시하는 동안 작업(예: -a, -l, --verbose, --output, -name, -c 등)을 수행합니다.무엇*
(예: file1, 호스트 이름, 데이터베이스) 에서 작동합니다 .