/
echo 명령어로 줄바꿈(개행) 문자 입력
echo 명령어로 줄바꿈(개행) 문자 입력
이스케이프 문자 처리
가끔 shell script 작성할때 echo 로 new line 을 출력해야 할 경우가 생깁니다.
Linux 에 포함된 echo 는 backslash escape (\) 를 만나도 특별하게 해석하지 않고 문자 그대로 출력하므로 \n 을 만나도 개행 문자로 처리하지 않아서 다음 문장은 \n 가 문자 그대로 출력됩니다.
$ echo "Hello\nWorld\n" Hello\nWorld\n
echo가 탈출 문자인 \ 를 만나면 특수 문자로 처리하도록 하려면 -e 옵션을 주고 실행하면 됩니다.
$ echo -e "Hello\nWorld\n" Hello World
echo manual 의 해당 부분 설명은 아래와 같습니다.
$ man echo If -e is in effect, the following sequences are recognized: \\ backslash \n new line \r carriage return \t horizontal tab
특수문자 출력
-e 옵션을 주고 실행할 경우 \ 를 특수 문자로 처리하지만 \! 나 \? 는 특수한 의미가 아니므로 문자 그대로 출력해서 문제가 될 수 있습니다.
예로 아래와 같은 .gitignore 를 echo 로 생성하고 싶은 경우를 생각해 봅시다.
원하는 .gitignore
* !.gitignore
-e 는 백 슬래시 escape 를 인식하나 ! 는 bash 의 특수 문자이므로 의도대로 동작하지 않고 "event not found" 에러가 발생합니다.
! 파싱 에러
$ echo -e "*\n!.gitignore" -bash: !.gitignore": event not found
그래서 -e 옵션을 주어 \ 를 escape 로 해서 실행하면 \! 는 특수한 의미가 있지 않으므로 의도와는 달리 \! 가 출력됩니다.
$ echo -e "*\n\!.gitignore" * \!.gitignore
이럴 경우 ! 문자에 대한 octal value(\0NNN 형식) 나 hex (\xHH)값을 적어서 해결할 수 있습니다.
!의 octal(041) 값 사용
$ echo -e "*\n\041.gitignore" * !.gitignore
!의 hex(21) 값 사용
$ echo -e "*\n\x21.gitignore" * !.gitignore
같이 보기
Ref
, multiple selections available,
Related content
Linux journalctl 사용법
Linux journalctl 사용법
More like this
MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기
MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기
More like this
중복된 내용을 제거하는 linux uniq 명령어 사용법
중복된 내용을 제거하는 linux uniq 명령어 사용법
More like this
Alfred App
Alfred App
More like this