“-”(이중 대시)의 의미는 무엇입니까? (“베어 더블 대시”라고도 함)


469

나는 명령 --에서 사용되는 것을 보았다 compgen.

예를 들면 다음과 같습니다.

compgen -W "foo bar baz" -- b

의 의미는 무엇입니까 --?

답변:


583

보다 정확하게 말하면 --bash 내장 명령 및 기타 여러 명령에서 이중 대시 ( )가 사용되어 명령 옵션의 끝을 나타내며 그 후에 위치 매개 변수 만 허용됩니다.

사용 예 : 문자열에 파일을 grep한다고 가정하십시오 -v-일반적으로 -v일치하는 의미를 바꾸는 옵션으로 간주되지만 (일치하지 않는 행만 표시) 다음과 같이 --문자열을 grep 할 수 있습니다 -v.

grep -- -v file

3
특히 Bash set내장에서 절대적으로 필요한 곳입니다.
l0b0

10
--에서 정규식과 옵션을 구분하는 작업을 수행 grep하지만 표준 방법은 -e/ 를 사용하는 것 --regexp입니다.
l0b0

5
@ l0b0 : 검색 할 패턴은 일반적으로 위치 매개 변수 중 하나이므로 --위의 예를 다음과 같이 작성할 수 있음을 알 수는 있지만 정확합니다 grep -e -v file(매우 혼란 스럽지만).
거스

2
모든 bash내장 명령 --이 옵션 마커의 끝으로 허용 되는 것은 아닙니다 . [그리고 예를 echo들어서는 안됩니다 ( 이유 중 하나를 echo안정적으로 사용할 수 없습니다 ).
Stéphane Chazelas

44

이것은 파라미터 (옵션) 목록의 끝을 표시합니다.


39

에서 man bash우리가 읽을 수있는 쉘 내장 명령 섹션 :

특별히 언급하지 않는 한, 각각의 내부 명령이 선행 옵션을 수락 등이 섹션의 설명은 -수락 -- 옵션의 끝을 나타 내기 위해 .

:, true, false, 및 test내장 매크로 옵션을 허용하지 않으며 치료하지 않는 --특별. exit, logout, break, continue, let, 및 shift내장 매크로 수락 및 프로세스 인수로 시작 -하지 않고 --. 인수를 허용하지만 옵션을 수락하도록 지정되지 않은 다른 내장은 -유효하지 않은 옵션으로 시작하는 인수를 해석하며이 해석 --을 방지 해야 합니다.

옵션의 끝을 의미 하는 echo것은 아닙니다 --.


2
참조를 위해 +1 man bash(다음에 직접 참고 :) .
user3773048

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.