간단한 사실을 검색하던 중 echo
다음 페이지를 발견했습니다.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
일반적으로 웹사이트의 HTML 프레임입니다.https://pubs.opengroup.org/onlinepubs/9699919799/(여기서 "echo"를 검색할 수 있습니다).
이것은 POSIX라고 주장하지만 나는 그것을 보지 못하고 -n
본다 \c
!
내가 무엇을 찾았나요?
정상적인 재시작지적를 /bin/echo
인식 하지만 기본적으로는 그렇게 하지 않습니다. 인식 되려면 \c
뭔가를 해야 합니다 .echo -e
\c
답변1
IEEE 1003.1-2017(일명)을 찾았습니다.단일 유닉스 사양, The Open Group에서 출판.
자세한 내용은 "POSIX란 정확히 무엇입니까?","POSIX, 단일 UNIX 사양 및 개방형 그룹 기본 사양의 차이점은 무엇입니까?” 및 관련된 모든 질문과 답변을 제공합니다.
바로 -n
거기에 굵게 표시되어 있어서 놓치기 어렵습니다. 예, \c
이는 표준입니다.
행동의 변화는 echo
잘 알려져 있습니다. 이것이 /bin/echo
쉘 내장과 다르며 echo
하나는 필수이고 -e
다른 하나는 그렇지 않다는 사실에 놀라지 마십시오 . 심지어저것단순한.
자세한 안내는 "를 참조하세요.왜 printf가 echo보다 나은가요?".
printf
아이러니하게도 정확히 동일한 이스케이프 시퀀스를 포함하는 잘 알려지지 않은 가변성에 대해서는 \c
"Bash printf 형식이 작동하지 않습니다.".
답변2
이는 UNIX 브랜드 POSIX 인증 플랫폼을 사용하는 경우 기본적으로 echo
처리됩니다 .\c
이는 Solaris, AIX, HP-UX 및 Apple에 적용됩니다.
Apple은 bash
이 에코 동작도 지원하지만 bash
기본적으로 호환되도록 하려면 특정 컴파일 옵션이 필요합니다. 이 컴파일 옵션은 bash
MacOS 및 Solaris에서 사용됩니다. 따라서 bash
사람들은 POSIX 인증 플랫폼에서 동작이 다르다는 사실을 깨닫고 혼란스러워할 수 있습니다.
기억하세요: GNU
GNU는 UNIX가 아닙니다. 많은 GNU 도구는 POSIX와 호환되지 않거나 기본적으로 POSIX와 호환되지 않습니다. 따라서 인증된 플랫폼이 아닐 때는 주의하세요.
참고: 지원하지 않더라도 소규모 임베디드 플랫폼에 대한 POSIX 브랜딩을 얻을 수 있지만 브랜딩 echo \c
의 경우 UNIX
지원해야 합니다.모두 XSI
POSIX 확장. Linux는 대부분의 확장을 지원하지 않습니다 XSI
. 예를 들어 많은 Linux 배포판에서 사용되는 dash
기본 셸은 dash
멀티바이트 문자를 지원하지 않기 때문에 id와 완전히 호환되지 않습니다.