kubectl
예시로 알아 봤는데
kubectl run --image nginx ...
그리고
kubectl run --image=nginx ...
둘 다 유효합니다.
일반적으로 명령줄 프로그램의 경우 옵션 이름과 값 사이에 등호가 허용되거나 필요한지 여부에 대한 규칙이 있습니까?
답변1
일반적으로 명령줄 인수를 해석하는 방법의 구현은 전적으로 프로그래머의 재량에 달려 있습니다.
즉 말하자면,많은 경우에, "긴" 옵션의 값(예: 가져오기)은 옵션 이름과 값 사이에 (즉)로 지정되는 --option_name
반면, 단일 문자 옵션의 경우 플래그와 값을 공백으로 구분하는 것이 더 일반적입니다. 또는 구분 기호를 전혀 사용하지 마십시오(like).=
--option_name=value
-o value
-oValue
GNU 날짜 유틸리티 매뉴얼 페이지의 예:
-d, --date=STRING display time described by STRING, not 'now'
-f, --file=DATEFILE like --date; once for each line of DATEFILE
보시다시피, "짧은" 형식(예: )을 사용하는 경우 값은 옵션 switch 에서 공백으로 구분되는 -d
반면, =
"긴" 형식(예: --date
)을 사용하는 경우 값은 공백으로 구분됩니다.
편집하다
스티븐 키트(Stephen Kitt)가 지적했듯이,GNU 코딩 표준명령줄 옵션을 사용 getopt
하고 구문 분석하는 것이 좋습니다 . getopt_long
매뉴얼 페이지 상태 getopt_long
:
--arg=param
긴 옵션은 또는 형식의 인수를 사용할 수 있습니다--arg param
.
따라서 이 기능을 사용하는 프로그램은 두 가지 형식을 모두 허용합니다.
답변2
일반적으로 명령줄 프로그램의 경우 스위치와 값 사이에 등호를 허용하거나 요구하는지 여부에 대한 규칙이 있습니까?
아니요, 없습니다. 오픈 소스 세계와 일반적인 컴퓨팅에는 많은 경쟁 표준이 있습니다(강제 xkcd) 누구나 언제든지 새로운 규칙과 표준을 제안할 수 있습니다. POSIX 유틸리티 인수 구문=
예를 들어 while 은 전혀 언급되지 않습니다.남자들은 선택권을 갖는다그것을 언급하십시오. 실제로는 다양한 명령줄 프로그램을 접할 수 있습니다.
=
공백 뒤 또는 뒤에 긴 옵션 값을 취하는 옵션은 다음과 같습니다.
$ touch a b c d
$ ls --format=verbose
total 0
-rw-r--r-- 1 ja users 0 Mar 17 14:39 a
-rw-r--r-- 1 ja users 0 Mar 17 14:39 b
-rw-r--r-- 1 ja users 0 Mar 17 14:39 c
-rw-r--r-- 1 ja users 0 Mar 17 14:39 d
$ ls --format verbose
total 0
-rw-r--r-- 1 ja users 0 Mar 17 14:39 a
-rw-r--r-- 1 ja users 0 Mar 17 14:39 b
-rw-r--r-- 1 ja users 0 Mar 17 14:39 c
-rw-r--r-- 1 ja users 0 Mar 17 14:39 d
긴 옵션 값이 뒤에 올 필요는 없지만 =
공백이 필요한 것:
$ readelf -a main | grep 'program interpreter'
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
$ patchelf --set-interpreter=fake main
patchelf: getting info about '--set-interpreter=fake': No such file or directory
$ patchelf --set-interpreter fake main
$ readelf -a main | grep 'program interpreter'
[Requesting program interpreter: fake]
or 옵션을 =
취하지 않고 나중에 값을 취하는 것 :-
--
dd if=/dev/urandom of=~/Desktop/test.txt bs=1M count=3
주어진 명령줄 프로그램이 주어진 방식으로 입력을 받아들이는 데는 여러 가지 이유가 있을 수 있습니다. 작성자의 비전, 아무도 신경 쓰지 않기 때문, 작성자는 다른 사람들이 표준을 생각해 냈다는 사실을 모르기 때문, 프로그램이 Unix로 포팅되었기 때문입니다. 운영 체제마다 규칙이 완전히 다르거나벌써 예전같아.