항상 지령에 붙어있는 - (Double Dash)는 뭐예요?
예를 들면 Node입니다.js에 테스트를 쓸 때 이런 지령을 본 적이 있습니까?
dotenv -e .test.env -- jest --config config.json
.test.엔v 다음에 섞기--
.이게 도대체 뭐야?결론
- 는 이후의 입력이 옵션이 아니라는 것을 지정하는 기호입니다.
bash 문서에서 그 존재를 언급했다.
Unless otherwise noted, each builtin command documented as accepting options preceded by ‘-’ accepts ‘--’ to signify the end of the options. The :, true, false, and test/[ builtins do not accept options and do not treat ‘--’ specially. The exit, logout, return, break, continue, let, and shift builtins accept and process arguments beginning with ‘-’ without requiring ‘--’. Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with ‘-’ as invalid options and require ‘--’ to prevent this interpretation.
(조대략의 번역)
기본적으로 "-"로 시작하는 매개 변수는 선택적으로 수락할 수 있는 명령으로 "-"을 전달하여 옵션의 끝을 나타낸다.
매개변수는 수락하지만 옵션은 수락하지 않는 명령도 있습니다.이러한 명령은 "-"로 시작하는 매개변수를 잘못된 옵션으로 인식하므로 "-"로 시작하는 매개변수를 제공하려면 "-"를 사용해야 합니다.
man bash를 진행하더라도
--
에 대한 기술을 찾을 수 있습니다. -- A -- signals the end of options and disables further option
processing. Any arguments after the -- are treated as file-
names and arguments. An argument of - is equivalent to --.
(초대략적인 의역)--
는 옵션의 끝을 나타냅니다.--
이후의 매개 변수는 파일 이름이나 매개 변수로 식별된다.예컨대디렉터리에 txt라는 파일이 존재하는 상태
rm --hoge.txt
에서 실행하면 어떤 일이 일어날까요?> rm --hoge.txt
rm: illegal option -- -
는 주로'rm 명령에 -hoge.txt 같은 명령이 존재하지 않습니다!'의 오류입니다.기본적으로 bash와zsh 등 내부 명령은 -
와--
에서 시작된 매개 변수(-h 또는-help 등)를 옵션으로 식별하기 때문에 -hoge.txt도 옵션 중 하나로 식별됩니다.참고로 집행
rm *.txt
할 때 rm지령도 실패할 수 있습니다> rm *.txt
rm: illegal option -- -
이런 상황을 방지하기 위해서는 끼워서 - "앞으로 입력은 옵션이 아니에요"라고 상대방에게 알려야 한다> rm -- --hoge.txt
주의 사항: 설명 없음 - 명령
명령은 -- 옵션 끝 기호로 해석되지 않을 수 있습니다.
echo는 하나의 예다."n"문자열을 검사하려고 합니다.
> echo -n
(何も出力されない)
상기 명령은'n'옵션을 echo에 건네주면 식별됩니다.그럼 이 글에 끼워서 배운 "-"하면 되잖아요.출력
> echo -- -n
-- -n
-- -n
.출력하고 싶은 건-n
입니다.명령에 따라 "-"를 해석하지 않는 경우가 있습니다.참고로 zsh라면
--
로 대체-
하면 echo'-n'이라는 문자열을 사용할 수 있습니다.> echo - -n
-n
- 수행 시 환경과 명령에 따라 동작이 달라지므로 주의해야 합니다.
Reference
이 문제에 관하여(항상 지령에 붙어있는 - (Double Dash)는 뭐예요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/dowanna6/articles/245df006deee0c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)