2017-04-20 1 views
1

새 라인 이스케이프 시퀀스가 ​​포함 된 파일에 뭔가를 반향시키고 싶습니다. 그러나 이스케이프 처리를 계속하고 싶습니다. 나는 기본적으로 this 질문의 반대를 찾고 있습니다."echo"가 백 슬래시 이스케이프를 해석하지 못하게합니다.

echo "part1\npart2" >> file 
내가 파일

$ cat file 
old 
part1\npart2 

에서 다음과 같이하고 싶은

하지만 이것은 POSIX는 printf 대신 echo의 사용을 권장하는 이유의 좋은 예입니다 (

$ cat file 
old 
part1 
part2 
+1

게시 한 것처럼 작동해야합니다 ... 그렇지 않습니까? –

+0

기본 동작이어야합니다. https://unix.stackexchange.com/questions/219268/how-to-add-new-lines-when-using-echo - 어떤 운영 체제 및'echo '버전이 있습니까? 있다? – chrki

+0

'echo'해봤습니까? – Igor

답변

3

것 같습니다 here, "응용 프로그램 사용법"참조) : 당신은 echo으로 얻는 것을 모릅니다.

당신이 얻을 수 :

  • 쉘이 해석하지 않습니다 echo를 내장 백 슬래시는 기본적으로 탈출
    • 예 : 배쉬는 echo는 백 슬래시 이스케이프 해석을 가능하게하는 -e 옵션을 가지고 있으며, xpg_echo를 확인 내장 쉘 옵션
  • ba 내장 문자 echo은 zsh을, 대시
  • /bin/echo : ckslash은 기본적으로
    • 예를 탈출 아마 배쉬는

    POSIX 및 내장처럼 하나 ... GNU로 coreutils echo에서, -e 옵션을 이해하는 달려있다 사양은 말합니다이 (강조 광산) :

    string 표준 출력에 기록 할 문자열입니다. 첫 번째 피연산자가 -n이거나 피연산자 중 하나에 <backslash> 문자가 포함 된 경우 결과는 구현 정의입니다.

    그래서, 휴대용 솔루션을 위해, 우리는 printf를 사용할 수 있습니다

    printf '%s\n' 'part1\npart2' >> file 
    
    형식 문자열의 \n 항상 해석됩니다

    , 인수에 \n 해석되지 않습니다, 결과

    part1\npart2 
    

    file에 첨부됩니다.