30년 이상 된 이 명령으로 "-n" 문자열을 인쇄하는 방법을 모르겠습니다 echo
.
나는 이것을 시도했습니다 :
Michaels:Scripts$ echo -n
Michaels:Scripts$ echo "-n"
Michaels:Scripts$ echo -e "-n"
Michaels:Scripts$ echo -- -n
-- -n
Michaels:Script$ echo -- "-n"
-- -n
Michaels:Script$ echo "\-n"
\-n
저는 Mac OS X ML을 사용합니다. 나는 이런 행동이 매우 이상하고 예상치 못한 것이라고 생각한다.
답변1
이를 사용하고 싶지 않다면 prinf
적어도 다음과 같은 SO Q&A에 따라 몇 가지 옵션이 있습니다.echo "-n"은 -n을 인쇄하지 않습니까?.
이것이 최선의 선택인 것 같습니다:
$ echo "x-n" | cut -c 2-
-n
또는 약간의 변형이 있습니다.
$ echo -- '-n'|cut -d" " -f2
-n
인쇄 기능
printf
그런 문제는 없습니다:
$ printf "%s\n" -n
-n
답변2
왜 사용해야합니까 echo
?사용printf
:
printf -- '-n\n'
또는:
printf '%s\n' -n
그리고 echo
:
echo -n
-n<LF>
출력은 UNIX와 일치합니다 echo
.
bash
, dash
GNU 또는 zsh
echo(대부분의 시스템의 기본 구성)는 다음을 통해 달성할 수 있습니다.
echo -en '-n\n'
또는 (ASCII 기반 시스템의 경우):
echo -e '\055n'
Zsh는 다음 echo
을 통해 이 작업을 수행할 수 있습니다.
echo - -n
또는 (이 bsdecho
옵션이 활성화되어 있지 않다고 가정):
echo '\u002Dn'
물고기는 다음과 echo
같습니다
echo -- -n
Ksh와 Zsh는 다음 print
을 통해 이를 수행할 수 있습니다.
print - -n
또는:
print -- -n
bash
(그러나 아님 zsh
), posix
및 xpg_echo
가 동시에 활성화되지 않았다고 가정합니다.
echo -n -; echo n
흥미롭게도 POSIX 방식만으로는 출력하는 것이 불가능합니다 -n
( echo
즉, Unices와 Unix 계열 간에 어느 정도 이식 가능). 왜냐하면 첫 번째 인수가 -n
백슬래시 문자를 포함하는 경우 동작이 지정되지 않기 때문입니다.
답변3
역사적 이유로 인해 옵션의 끝을 나타내는 신호를 제외하고 로 시작하는 모든 매개변수 는 옵션 echo
인 일반적인 종류의 매개변수 구문 분석은 수행되지 않습니다 . 이 명령은 대부분의 경우 인수를 변경하지 않고 인쇄하지만 UNIX 변형, 셸 및 셸 구성 방법에 따라 일부 옵션( , , , )을 해석하고 백슬래시+ 문자를 특별히 처리할 수 있습니다.-
--
echo
-e
-E
-n
-
-n
혼자서 인쇄 할 수 있는 휴대용 방법은 없습니다 echo
. 특수 문자에 대해 걱정하지 않고 문자열을 인쇄하는 이식 가능한 방법은 다음과 같습니다.
printf %s -n
또는 더 일반적으로 print %s "$somestring"
. 문자열 뒤에 마지막 개행 문자를 인쇄하려면 printf '%s\n' -n
.
답변4
처음 두 기호로 "-n"이 필요한 경우 다음을 시도하십시오.
echo -e '\r-n'
또 다른 방법:
echo -n '-'; echo 'n'