`echo`로 "-n"을 인쇄하는 방법은 무엇입니까?

`echo`로 "-n"을 인쇄하는 방법은 무엇입니까?

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, dashGNU 또는 zshecho(대부분의 시스템의 기본 구성)는 다음을 통해 달성할 수 있습니다.

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), posixxpg_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'

관련 정보