
나는 이것이 echo -e
일반적인 명령이 아니라는 것을 안다. echo '-e'
나는 이것을 시도했지만 echo \-e
여전히 작동하지 않습니다.
답변1
가장 좋은 해결책은 그것을 사용하는 것이 아니라 echo
사용하는 것 입니다 printf
.
printf '%s\n' -e
이는 임의의 변수에 대해 작동합니다.
var=-e
printf '%s\n' "$var"
echo
... 이는 값이 d라는 지식을 기반으로 코드의 다른 곳에서 특별한 준비/수정을 수행할 필요가 없음을 의미합니다 .
그런데,POSIX 쉘 명령 사양echo
구현 시 이식이 불가능하다는 점을 인정하고 주제에 대한 참고 사항을 포함하세요.
-n(첫 번째 인수)과 이스케이프 시퀀스를 생략하지 않는 한 모든 POSIX 시스템에서 echo를 이식적으로 사용할 수 없습니다.
printf 유틸리티는 다음과 같이 echo 유틸리티의 일반적인 동작을 에뮬레이트하는 데 사용할 수 있습니다(IFS에 표준 값이 있거나 설정되지 않았다고 가정).
POSIX.1-2008 이 볼륨의 역사적인 System V 에코 및 XSI 구현에 대한 요구 사항은 다음과 동일합니다.
printf "%b\n" "$*"
BSD 에코는 다음과 같습니다.
if [ "X$1" = "X-n" ] then shift printf "%s" "$*" else printf "%s\n" "$*" fi
새로운 애플리케이션에서는 echo 대신 printf를 사용하는 것이 좋습니다.
(강조 추가).
즉, GNU 시스템에는 표준을 준수하는 동작을 요청하는 또 다른 옵션이 있습니다.
$ POSIXLY_CORRECT=1 /bin/echo -e
-e
답변2
개행 문자 포함
echo -en '-e\n'
개행 문자 없음
echo -e '-e\c'
공백으로 둘러싸여 있음:
echo '-e ' echo ' -e'
백스페이스 키를 사용하세요(Joseph R.에게 감사드립니다):
echo -e ' \b-e'
(SPC BS - e LF를 출력하지만 BS로 렌더링된 터미널로 전송되면
-e
커서를 왼쪽으로 한 열 뒤로 이동하여-
SPC를 덮어쓰게 됩니다.)
bash
내장 기능의 동작은 echo
bash 버전에 따라 달라질 수 있습니다. 또한 환경( POSIXLY_CORRECT
및 SHELLOPTS
변수 BASHOPTS
), 옵션( posix
, xpg_echo
), 빌드 옵션 및 argv[0]
( sh
vs bash
)에 따라 달라집니다. 여기서 테스트 GNU bash 4.2.53(1)
한 기본 빌드, 기본 옵션, 빈 환경, bash
. 에도 적용됩니다 zsh 5.0.5
.
답변3
GNU echo
문자 의 -e
ASCII 코드 :
$ /bin/echo -e '\055'e
-e
055
8진수 ASCII 숫자입니다 -
( man ascii
빠른 참조 참조).
답변4
-n
줄 바꿈을 방지하는 데 사용됩니다 .
$ echo -n - && echo e
-e