플래그, 옵션 및 인수의 차이점은 무엇입니까? [닫은]

  • ls -a(나는 -a옵션을 고려 한다)

  • sudo -u username( -u= 옵션, username= 인수)

  • chmod 664 my-dir( 664= 옵션, my-dir= 인수)

디렉토리 목록을 볼 때를 제외하고는 “this is a flag”라는 예제를 생각할 수 없습니다.

-r--------. 1 david david   3344 May 19 17:48 611056.pdf

여기에는 소유자에 대해 “읽기 플래그”가 설정되어 있지만 그게 전부입니다. “읽기 옵션”이라고 부르지 못하게하려면 어떻게해야합니까?

나는 주로 DocBook XML로 기술 문서를 작성하고 편집하며, 가능한 일관성 있고 정확한 차이점에 대한 설명을 찾고 있습니다. 그러나, 나는 이미 패턴 형성을보고 있습니다 :

  1. 플래그는 부울 인 경향이 있습니다. 예를 들어setenforce 0
  2. 옵션은 명령의 작동 방식을 정의하는 데 도움이됩니다. 일부는 선택 사항 일 수 있습니다.
  3. 인수는 작동 할 객체를 명령에 알려줍니다.

플래그와 옵션을 결합하는 것을 볼 수 있습니다 (일부 옵션에는 12 가지 가능한 값이있을 수 있지만 부울에는 2 개만 있습니다). 인수는 그대로 유지하기에 충분히 다른 것처럼 보입니다.



답변

“옵션”, “인수”및 “플래그”라는 용어에 대한 일관된 정의가 없으며 소프트웨어 개발 세계에서 사용을 강제 할 수있는 중앙 권한이 없습니다. 이 용어는 많은 용어로 발생합니다. “디렉토리”라는 단어를 30 년 이상 사용한 후에 Microsoft의 새로운 연설에 혼동 된 “폴더”라는 단어를 사용하는 사람들을 처리해야합니다.

프로그래밍에서 용어에 대한 합의 정의가 나올 수있는 여러 가지 방법이 있습니다. “argument”/ “option”/ “flag”의 경우, 프로그래밍 라이브러리에 대한 표준 매뉴얼 및 학습서가 공통 라이브러리에서 사용되는 용어와 같이 사용법을 강제하는 데 도움이되었습니다.

예를 들어, 명령 후 명령 행에 입력 한 것은 종종 함수 호출에 대한 인수 와 유사하게 명령 에 대한 “인수”라고하며, 이는 C 매뉴얼에서 “인수”라고하기 때문에 부분적으로 발생합니다 ( 따라서 argc하고 argv). argparse파이썬 라이브러리는 용어 “인수”을 시행하는 데 도움이됩니다. 그러나 나는 또한 그것들이 “매개 변수”라고 불리는 것을 보았습니다.

“옵션”이라는 용어는 “선택적”에서 파생되었으므로 생략 할 수 있습니다. getoptC 라이브러리는이 용어를 사용하는 이유 중 하나입니다. 그러나 실제로는 선택 사항이 아닌 “옵션”에 대한 선례가 있습니다. 예를 들어, argparse 매뉴얼에는 “필수 옵션”을 만들 수 있다고 명시되어 있습니다 (그러나 이것이 일반적으로 “잘못된 형식”이라고도 함). 옵션은 종종 하나의 (앞에는 -) 또는 이중 ( --긴 옵션) 대시하지만, 요구 또는 옵션에 대한 대시 사용을 강제하지 않는 잘 알려진 명령이 있습니다 (예를 들어, tar, ps, 및 dd). 옵션 자체 는 인수 (예 : -w80--color=always) 또는 때로는 여러 인수를 취할 수 있습니다 .

내 경험상 “플래그”는 옵션과 동일하지만 일반적으로 인수 자체를 취하지 않고 본질적으로 부울 온-오프 스위치를 나타냅니다.

더 넓은 범위에서, 모든 프로그래머는 일을하고 이름을 짓는 표준적인 방법을 찾아 보는 옵션을 가지고 있지만, 추가 비용없이 바퀴를 재발 명할 수 있기 때문에, 이름이 일관되지 않을 것입니다. 그리고 코드를 문서화하고 예제를 제공하여이 단어들에 어떤 새로운 의미를 부여했는지는 분명합니다. 코드에서 코드를 선택하는 사람들이 충분하다면 이러한 이름과 의미가 그대로 유지 될 수 있습니다.


답변

플래그는 옵션 유형, 부울 유형 옵션이며 기본적으로 항상 false입니다 (예 : –verbose, –quiet, –all, –long 등).

옵션은 기능을 알 방법 , 휘 스 트 놀이 인수는 함수 알려줍니다 (등, 예를 들어, -a, -l, –verbose, –output, -name, -c) 행동하는 방법을 무엇을 (예에서 /에 행동하는 *, 파일 1을 호스트 이름, 데이터베이스).


답변