이것은올바른 방법- 매개변수와 형식 매개변수를 공백으로 구분합니까?
그리고주장을 분리해야 할까요, 아니면 함께 유지해야 할까요?
예:
<command> -D 192.168.0.100 -p 80
<command> -cvvfz
또는:
<command> -D192.168.0.100 -p80
<command> -c -vv -f -z
일부 프로그램은 하나의 "스타일"만 허용합니까, 아니면 전혀 중요합니까?일반적으로 말하면?
답변1
일부 프로그램하다한 가지 스타일만 허용합니다. 둘 중 하나입니다.
사용되는 모든 항목은 매개변수가 있는 옵션을 getopt()
허용해야 -xfoo
합니다 . 그러나 모든 프로그램이 .-x foo
-x
getopt()
임의로 선택할 수 있는매개변수는 또 다른 문제입니다. 적용되지 않을 수도 있지만 매개변수 없이 옵션을 제공하기 어렵기 때문에 -x foo
필요할 수도 있습니다 .-xfoo
어떤 것을 "사용해야" 하는지는 선호의 문제이며 모든 사람이 자신의 의견을 가질 가능성이 높습니다.
답변2
일부 프로그램에는 스타일이 필요하지만 일부 프로그램에는 그렇지 않습니다. 예를 들어:
mysql -ph 10.1.1.1
비밀번호를 사용하여 연결을 시도합니다 mysql
.localhost
h
mysql -p -h 10.1.1.1
다른 한편으로는 연결되어 10.1.1.1
비밀번호를 묻는 메시지가 표시됩니다.
답변3
이는 유틸리티에 의해 정의됩니다. 일부는 하나 또는 두 가지 양식을 모두 허용합니다.
존재하다POSIX 유틸리티 규칙, 이 템플릿은 매개변수 구문 섹션에 제공됩니다.
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
옵션 매개변수가 선택사항이 아닌 경우에는 옵션 매개변수를 공백 문자로 옵션과 구분해야 합니다. 이 경우 구분 기호를 사용하면 안 됩니다.하지만그 다음에...
과거 애플리케이션의 지속적인 작동을 보장하기 위해 POSIX.1-2017에는 몇 가지 예외가 있습니다.
유틸리티 구문 지침의 다음 섹션에서 지침 7은 옵션 매개변수가 선택 사항이 되어서는 안 된다고 명시하고 있습니다.
이 모든 혼란에서 한 가지 분명한 것은 플래그와 매개변수 사이의 공백에 대한 명확한 규칙이 없다는 것입니다.
정보 전달의 구체적인 예:
Syntax error Syntactically correct
xclip -ir <<< ABC xclip -i -r <<< ABC
xkbcomp -I /home/user "main" :0 xkbcomp -I/home/user "main" :0
rename -e's/f/x/' f rename -e 's/f/x/' f
참고로 공지 지침 3에는 "각 옵션 이름은 단일 영숫자 문자여야 합니다"라고 명시되어 있습니다. 다중 문자 옵션 이름을 사용하는 많은 유틸리티 예제를 생각해 볼 수 있습니다.
답변4
프로그램에 따라 다르지만일반적으로 말하면옵션과 해당 값 사이에는 공백이 있어야 합니다.
일부 응용프로그램/유틸리티는 --option=value
매개변수를 허용하는데, 이 경우 공백이 있을 수 없습니다.