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


14
  • 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 개만 있습니다). 인수는 그대로 유지하기에 충분히 다른 것처럼 보입니다.


2
"내가 전화하지 못하게하는 것은 무엇입니까?" 아냐 아무것도 스페이드 트리를 호출하는 것을 막을 수 없습니다.
muru

@muru-영어 사전은 어설 션에 동의하지 않습니다.
DarkHeart

3
더 혼란스럽게하기 위해 ls -a예제 와 같이 매개 변수 / 인수를 플래그로 사용하지 않는 옵션을 호출합니다 . (나에게, 플래그 부울 변수입니다.)
울리히 Schwarz의

3
그들은 개 사육장입니다 ; 그들 모두 30 명. :-) ⁠
Scott

보고 싶은 패턴을 좁히기 때문에 보이는 패턴 만 있습니다. 압축을 풉니 다 예를 들어, (나는 30 년 이상 사용하고 있음)이 아닌 TAR 파일을 생성하는 한 가지 방법은 다음과 같습니다 tar c abc.txt > x.tar, 거기에 cA는 기능 . 당신은 옵션을 호출하려고하고 완전히 부적절합니다.
Anthon

답변:


17

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

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

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

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

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

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


7

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

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


그래서 당신의 정의에서 git pull git://bla/bla의이 pull알려주는 인수입니다 git작업 할 무슨 일이.
Anthon

1
@Anthon 아니요, 연산자 (스위치 / 플래그 / 매개 변수), 인수 및 명령이 있습니다. pull명령입니다. 명령을 응용 프로그램 이름의 확장으로 생각할 수 있습니다. git pull <...>은라는 응용 프로그램과 같습니다 git-pull. 응용 프로그램에 명령이 있으면 각 명령으로 응용 프로그램이 완전히 다른 작업을 수행합니다.
Ziggy Crueltyfree Zeitgeister

망할 놈의 사람들이 명령을 호출 할 수도 있지만, 그게에 대한 예를라는 것을 항상 아닙니다 tar사용 c불리며 생성하는 기능 . 그리고 그것은 정확히 문제입니다 : 당신이 당신의 대답에 있다고 생각되는 것처럼 보일지라도 용어의 표준화는 없습니다
Anthon

플래그는 기본적으로 false 일 필요는 없습니다. 명령 행에 플래그를 제공하면 기본 상태 (on-> off 또는 off-> on)가 반대로됩니다. 어떤 사람들은 그것을 깃발과 구별하기 위해 토글이라고 부릅니다. 다른 사람들은 그 구별이 중요하지 않다고 생각합니다.
cas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.