왜 '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 -eecho -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.