왜 'echo --help'가 echo의 도움말 페이지를 제공하지 않습니까?


20

Bash에서 'man echo'를 시도했는데 'echo --help'가 도움말을 표시 한 다음 종료된다고 말하고 마찬가지로 'echo --version'이 버전을 출력하고 종료한다고 나에게 말했습니다. 그러나 왜 작동하지 않습니까? 'echo --help'는 단순히 '--help'를 그대로 인쇄합니다.


2
의 도움말 메시지 작성 echo --help은 버그 입니다. 그렇게하면 어떻게되는지 상상해보십시오 printf "The option you entered is: " ; echo "$opt". 쉘 변수 opt에 text가 포함되어 있습니다 --help. POSIX 표준 echo에 따라 이런 방식으로 동작하는 것은 허용되지 않지만 GNU 에코는 명백히 부적합합니다.
— R ..

1
@R .. 그래서 echo -e및 echo -n당신의 논리에 의해, 또한 버그?
— Tyilo

@Tyilo : POSIX의 사양 또는이 문제에 대한 내용은 여기를 참조하십시오 : etalabs.net/sh_tricks.html
— R ..

@R .. 다음과 같은 경우 어떻게되는지 상상해보십시오. printf "입력 한 옵션은 다음과 같습니다."; echo "$ opt"및 쉘 변수 opt는 텍스트 -e 또는 -n을 포함합니다.
— Tyilo

@ 타일로 : 다시 설명하기보다는 이미 그 질문에 대한 답을 설명한 페이지가 마음에 들었습니다.
— R ..

답변:


26

man echoecho프로그램 과 관련이 있습니다 . GNU echo 는--help 다른 것과 마찬가지로 옵션을 지원 합니다 . echoBash에서 실행 하면 대신 내장 기능echo 을 얻 습니다 .

echo기본 제공 프로그램이 아닌 프로그램에 액세스하려면 다음 경로를 제공하십시오.

/bin/echo --help

또는 Bash의 enable명령 을 사용하여 내장 버전을 비활성화하십시오.

$ enable -n echo
$ echo --help

Bash에는 기본 명령이 많이 내장되어 있습니다. 속도가 조금 빠르기 때문에 필요할 때 항상 이와 같이 무시할 수 있습니다.


을 사용하는 데 적합 zsh합니다. enable그래도 작동합니다.
— Michael Homer

@MichaelHomer 일부 내장 버전은 원래 버전과 다를 수 있습니다. 차이점이 있다면 언급 한 'echo program'을 포함하여 모든 원래 명령의 이름은 무엇입니까? 또는 내장 버전과 구별하기 위해 어떤 용어를 사용합니까?
— Bookee

1
@booksee : 예, 다를 수 있습니다. echo특히 GNU 는 POSIX보다 많은 확장 기능을 가지고 있으며 Bash echo는 몇 가지 밖에 없습니다. 기본적으로 그림자가 될 수있는 명령에 대해 생각할 수있는 일반적인 이름은 없습니다. 이 하나 필요할 것 너무 많은 수 없습니다 : echo, test, [, 그리고 pwd발생할 가능성이있어 그들이다.
— Michael Homer

@Gnouc : 예, command항상 내장을 명시 적으로 호출합니다. 나는 zsh다른 방식으로 작동하는 것 외에는 내가 무엇을 생각하고 있었는지 모른다 .
— Michael Homer

2
"Bash의 enable 명령을 사용하여 사용하지 않도록 설정"yup, guys, is like
— Braiam


8

옵션을 echo이해하지 못하는 내장 bash 명령을 사용 하고 --help있습니다. 사용하다:

/bin/echo --help

내장에 대한 도움말을 보려면을 echo사용 man bash하여 검색하십시오 echo.


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