참고 : 내 대답은 하지 영업 이익의 경우에 유효하고, 단지 컨벤션 정확히 단지라는 이름의 파일의 경우 아래 아니라 언급 한 다음과 같은 도구에 적용 -
표준에서 독서를 지정하는 것이 자주 (대시), 특별한 경우 입력이 예상됩니다. 허용 된 답변을 참조하십시오.
여기에 답을 찾는 동안 넘어 질 수있는 다른 경우에 대한 유용한 정보가 들어 있으므로 여기에 남겨 두십시오.
더블 대쉬!
표준 이중 대시 ( --
) 규칙을 사용하여 마지막 인수를 나타냅니다.
less -- -FILENAME
예
$ echo "meh" > -badname
$ less -badname
Number is required after -b
$ less -- -badname # GREAT SUCCESS!
으아 아아아
이 --
주장은 대부분의 쉘 유틸리티 및 명령 행 도구 구현에서 지원되는 규칙에서 비롯되며 CLI 도구를 구현할 때 따라야한다는 것이 대부분의 쉘에서 눈에 띄게 옹호합니다.
공개 그룹에서 권장
OpenGroup은 또한 기본 사양 의 유틸리티 설명 기본값 (v6) 섹션 에서이를 언급합니다 .
기본 동작 : [...] 옵션을 허용하지 않지만 피연산자를 허용하는 표준 유틸리티는 "-"를 버릴 첫 번째 인수로 인식해야합니다.
"-"을 인식하기위한 요구 사항은 적합한 응용 프로그램은 구현이 확장으로 제공 할 수있는 임의의 옵션으로부터 피연산자를 보호하는 방법이 필요하기 때문입니다. 예를 들어 표준 유틸리티 foo가 옵션을 사용하지 않는 것으로 표시되고 응용 프로그램에서 하이픈이있는 경로 이름을 지정해야하는 경우 다음과 같이 안전하게 수행 할 수 있습니다.
foo -- -myfile
-m 확장으로 사용되는 문제를 피하십시오.
그리고에서 유틸리티 구문 가이드 라인 (V7) :
지침 10 :
옵션 인수가 아닌 첫 번째 인수는 옵션의 끝을 나타내는 구분 기호로 받아 들여야합니다. 다음 인수는 모두 '-'문자로 시작하더라도 피연산자로 취급해야합니다.
배쉬 추천
다음은 bash 매뉴얼에서 발췌 한 내장 명령에 대한 내용입니다.
별도의 언급이없는 한,이 섹션에서 옵션을 수락하기 전에 옵션-Accepts-로 옵션이 끝났다는 의미로 문서화되어 있습니다.
:, true, false 및 test 내장은 옵션을 허용하지 않으며 특별히 취급하지 않습니다. 종료, 로그 아웃, 중단, 계속, 렛트 및 시프트 내장은-없이 시작하여 인수를 승인하고 처리합니다. 인수를 허용하지만 옵션을 수락하도록 지정되지 않은 다른 내장은이 해석을 막기 위해 유효하지 않은 옵션으로 시작하는 인수를 해석하고 요구합니다.
echo는 옵션의 끝을 의미하는 것으로 해석되지 않습니다.
추가 자료