에코 버전인지 아닌지

에코 버전인지 아닌지

전문가https://stackoverflow.com/questions/906590/echo-version-doesnt-works버전을 알아야겠어요echo

$ type -a echo | cut -d " " -f 3- | xargs -d '\n'
a shell builtin /usr/bin/echo /bin/echo
$ /usr/bin/echo -v
-v
$ /bin/echo -v
-v

답변1

표준은 echo어떤 옵션도 허용하지 않습니다(또는 XSI 확장의 경우 매개변수만 인식됩니다 -n). 많은 경우 echo내장 쉘을 사용하고 있는데, 제가 테스트한 모든 쉘에서 내장이 echo인식되지 않았습니다 --version. 그러나 적어도 다른 방식으로 인식했습니다 -e. 제가 찾은 유일한 인식된 것은 많은 Linux 시스템에 설치된 GNU coreutils의 것이었습니다.-E-necho--version/bin/echo

따라서 대부분의 경우 버전 식별 문제는 echo실행 중인 셸 식별로 귀결됩니다. 또는 /bin/echo현재 사용 중인 시스템이 Busybox가 아니라 GNU라는 것을 알고 있다면 를 실행하세요. 게다가 위에서 본 것처럼매뉴얼 페이지, GNU coreutils 버전만 지원됨 --version, 지원되지 않음 -v또는-V.


그러나 일반적으로 말해서, 무언가를 성취하려고 한다면 특정 버전에 의존할 필요가 없고 지원되는 기능에만 의존할 필요가 있습니다. 이러한 관점 printf에서 echo.

문자열을 있는 그대로 인쇄하려면 다음을 사용하십시오.

printf "%s\n" "$var"

문자열에서 백슬래시 이스케이프를 처리하려면 다음을 사용하십시오.

printf "%b\n" "$var"

마지막 개행 문자를 건너뛰려면 \n첫 번째 매개변수에서 해당 문자를 제거하세요.

바라보다왜 printf가 echo보다 나은가요? 그리고echo를 사용하여 "-e"를 인쇄하는 방법은 무엇입니까?

답변2

@ilkkachu의 답변에서 시작 :

macOS 10.15 노트북에서 이를 사용하면 zsh다음과 같은 결과를 얻습니다.

% which echo
echo: shell built-in command 

% whereis echo
/bin/echo

% /bin/echo --version
--version

이는 다음을 참조하여 설명됩니다. Apple은 man echo새 랩탑에 2002 BSD 버전을 패키징합니다. Apple은 이 매개변수만 지원합니다. :)echo-n

답변3

echo내 생각에는 GNU Bash와 GNU Coreutils의 두 가지 프로그램이 있는 것 같습니다 .

echoGNU 배쉬에서

  • (GNU Bash) 를 찾으려면 echo다음 명령을 사용 help하거나help echo

  • (GNU Bash)를 실행하려면 echo다음을 사용해 보십시오.echo

    echo "Hello World"
    echo -e "line 1\ttab\nline2"
    echo --help    # will return error "--help"
    echo --version # will return error "--version"
    help echo
    
  • Bash 버전을 알고 싶다면 시도해 보세요 bash --version. echo GNU Bash 버전이 있나요?

echoGNU Coreutils에서

  • echo(GNU Coreutils)를 찾으려면 다음 명령을 사용할 수 있습니다.
    dpkg-query --listfiles coreutils | egrep '/bin/|/sbin/'
    man echo
    which echo
    
  • echo(GNU Coreutils)를 실행하려면 다음을 호출해야 합니다./bin/echo
    /bin/echo "Hello World"
    /bin/echo -e "line 1\ttab\nline2"
    /bin/echo --help    # will return GNU Coreutils help
    /bin/echo --version # will return GNU Coreutils version
    help /bin/echo      # will return error
    

관련 정보