-n
쉘에 내장된 명령만 사용하여 echo
두 문자 문자열을 에코하는 것이 가능합니까 bash
?
나는 이것을 할 수 있다는 것을 알고 있지만 내장된 기능이 문자열을 출력할 수 있는지 printf '%s\n' -n
알고 싶었습니다 .echo
-n
답변1
-e
8진수 55를 사용한다는 것은 다음을 의미합니다 -
.
$ echo -e '\055n'
-n
...또는 8진수로 156 n
또는 8진수로 둘 다:
$ echo -e '\055\0156'
-n
이것이 -e
귀찮 다면 항상 백슬래시 시퀀스를 해석 xpg_echo
하도록 쉘 옵션을 설정하십시오 echo
(그러나 이는 일반적으로 원하는 것이 아닙니다).
$ shopt -s xpg_echo
$ echo '-\0156'
-n
in은 16진수 echo
도 bash
인식합니다.
$ echo -e '\x2d\x6e'
-n
답변2
모든 답변에 감사드립니다. 방금 생각난 것 하나를 추가하겠습니다.
echo -n -;echo n
답변3
" " -n
앞에 문자를 배치하고 \b
모드에서 " " 이스케이프 시퀀스를 사용하여 -e
최종 출력에서 문자를 제거합니다. 다음 예에서는 공백을 더미 문자로 사용합니다.
$ echo -e " \b-n"
-n
설명하다:
$ man echo
If -e is in effect, the following sequences are recognized:
\b backspace
그러면 출력이 터미널에 시각적으로 인쇄됩니다.
$ echo -e " \b-n" | tee /tmp/test
-n
$ cat /tmp/test
-n
그러나 출력을 구문 분석해야 하는 경우 보이지 않는 백스페이스 문자가 생성되므로 문제가 발생할 수 있습니다.
$ echo -e " \b-n" | wc -c
5
$ wc -c <<< $(echo -e " \b-n")
5
$ echo -e "--" | wc -c
3