터미널 명령에서“-”는 무엇을 의미합니까?


23

--after 명령 을 사용하는 많은 자습서를 보았습니다 . 이 같은:

command -- 

이것은 무엇을 --의미합니까?


어떤 비디오 튜토리얼?
TheWanderer


실제로, 나는이 질문이 이미 AU에 속지 않았다는 것에 놀랐다. 다른 StackExchange 커뮤니티에서 동일한 질문이 속임수로 간주되지 않습니까 (@edwinksl에서 제공하는 링크)? 그게 뭐야? 아마도 META에 물어봐야 할 것
같습니다

@Cbhihe 다른 SE 사이트의 대상을 복제 할 수있는 메커니즘을 알지 못합니다. 어쨌든, 그것은 너무 자주 발생하지 않으므로 아마도 필요하지 않을 것입니다.
edwinksl

3
@ anonymous2 왜 세상에서 그렇게할까요? 문제는 여기 주제에 관한 것이므로 계속 유지할 수 있습니다. 이동하면 AU에서 정보가 제거되고 U & L에 새로운 것이 추가되지 않으므로 왜 이것이 좋은지 알 수 없습니다.
terdon

답변:


46

--명령 행 옵션의 끝을 나타내는 데 사용됩니다. 이것으로 시작하는 인수를 사용할 수 있습니다 --. 예를 들어, 다음과 같은 파일을 만드는 경우 --foo:

$ > '--foo'
$ ls
--foo

그런 다음 삭제하려고 rm하면 인수를 제공한다고 생각합니다.

$ rm --foo 
rm: unrecognized option '--foo'
Try 'rm ./--foo' to remove the file '--foo'.
Try 'rm --help' for more information.

이 문제를 해결하는 한 가지 방법은 다음을 사용하는 것입니다 --.

$ rm -- --foo

이것은 일반적인 관행이며 POSIX 에서 권장 하므로 많은 프로그램에서 지원됩니다.


13
Bash는 전혀 구현하지 않았습니다. 그것은 이다 의 기능 rm프로그램 및 많은 POSIX 호환 유틸리티. 지침 10을 참조하십시오 . 실제로 Bash가 작업을 수행하지 않는지 (그리고 이해가되지 않는지) 확인하려면 그냥 작은 스크립트를 만들고로 printf '> %s <\n' "$@"시작하십시오 --.
gniourf_gniourf

3
트윗 담아 가기 옵션을 인쇄하는 작은 perl 스크립트를 작성하여 확인했는데 --, 전달하면 아무것도 표시되지 않지만 물론 관련 Perl 모듈 ( getopts)도 지원하기 때문입니다. 당신은 옳았습니다. 방금 빨리 검색 man bash했습니다. 인용 한 섹션을 보았지만 "명령 줄 옵션"섹션에 있음을 알지 못했습니다. 수정 해 주셔서 감사합니다. 답변이 수정되었습니다.
terdon

1

대부분의 명령은-를 사용하여 추가 매개 변수를 다르게 처리해야한다는 명령을 명령합니다. 한 가지 예는 위에서 언급 한 rm---filename입니다. 또 다른 예를 들어, 'startx'와 같은 스크립트는-의 앞에있는 모든 것을 해석하고 그 뒤에있는 모든 것을 X 서버에 전달합니다.

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