Windows -> Linux는 개행 코드에 주의! !
원래 개행 코드란?
안녕하세요! 바이오인포매틱스계 오타쿠 석사 학생의 roadricefield입니다! 오늘은 개행 코드의 이야기입니다. 여러분의 프로그램을 쓴 파일등의 텍스트 파일의 각 행의 마지막에는 실은 개행 코드 불리는 보이지 않는 문자가 쓰여져 있습니다. (에디터측에서 설정하는 것으로 가시화하는 것도 할 수 있습니다.) 컴퓨터에 개행하는 것을 알리는 기호입니다만 Windows와 Linux, Mac에서 개행 코드가 다릅니다. 이 때문에 Windows상의 에디터로 쓴 스크립트를 WSL로 이동하면 개행 코드를 이해할 수 없어 뱉어 멈추는 경우가 많습니다. 조금 해 봅시다.
Windows에서 VScode를 열고 새 파일을 만들고 다음과 같은 셸 스크립트 windows.sh
를 씁니다.
windows.sh#!/bin/sh
echo "Hello world!!"
이제 WSL을 사용해보십시오.
$ bash windows.sh
그렇다면 많은 사람들이 다음과 같이 화를 냈습니까?
windows.sh: line 2: $'\r': command not found
이 메시지가 나타나면 windows.sh
를 VScode에서 다시 열고 VScode 창의 오른쪽 하단을 확인하십시오.
이와 같이 "CRLF"라고 표시되고 있지요. 이 "CRLF"는 Windows의 개행 코드의 이름으로 이 windows.sh
로 개행 코드에 "CRLF"가 사용되고 있는 것을 나타내고 있습니다.
이번에는 오류 메시지 아래에 일단 Hello world!!
가 표시된다고 생각하지만 더 복잡한 스크립트의 경우 처리가 제대로 수행되지 않습니다.
Windows 줄 바꿈 코드를 Linux 줄 바꿈 코드로 바꾸는 방법
1. VScode로 저장할 때 문자 코드 변경
방금 "CRLF"라고 적힌 부분을 클릭하면 중앙 상단에 Select End of Line Sequence
라는 옵션이 나오므로 여기서 Linux의 문자 코드 인 "LF"를 선택하여 스크립트를 저장하십시오. 이것뿐입니다! 이제 더 이상 화를 내지 않습니다.
덧붙여서 개행 코드의 표시의 왼쪽에 "UTF-8"라고 문자 코드의 표시도 있습니다만 여기서 문자 코드의 변경도 할 수 있으므로 일본어로 쓰여진 코멘트등이 문자화되어 있을 때는 이것을 클릭 Reopen with Encoding
를 선택한 다음 Japanese (Shift JIS)
를 선택하면 읽을 수 있습니다.
2. sed 명령으로 문자 코드 바꾸기
sed 명령으로 바꿀 수도 있습니다. ( 참고 )
$ sed -i -e 's/\r//g' windows.sh
사이고에게
개행 코드 문제는 "Windows에서 편집한 스크립트를 서버에서 실행하면 의미를 모르는 오류가 나왔다!"라고 할 때 일어나는 경우가 많습니다. 글쎄.
Reference
이 문제에 관하여(Windows -> Linux는 개행 코드에 주의! !), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/roadricefield/items/32d781ed93bd70dded73
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/bin/sh
echo "Hello world!!"
$ bash windows.sh
windows.sh: line 2: $'\r': command not found
1. VScode로 저장할 때 문자 코드 변경
방금 "CRLF"라고 적힌 부분을 클릭하면 중앙 상단에
Select End of Line Sequence
라는 옵션이 나오므로 여기서 Linux의 문자 코드 인 "LF"를 선택하여 스크립트를 저장하십시오. 이것뿐입니다! 이제 더 이상 화를 내지 않습니다.덧붙여서 개행 코드의 표시의 왼쪽에 "UTF-8"라고 문자 코드의 표시도 있습니다만 여기서 문자 코드의 변경도 할 수 있으므로 일본어로 쓰여진 코멘트등이 문자화되어 있을 때는 이것을 클릭
Reopen with Encoding
를 선택한 다음 Japanese (Shift JIS)
를 선택하면 읽을 수 있습니다.2. sed 명령으로 문자 코드 바꾸기
sed 명령으로 바꿀 수도 있습니다. ( 참고 )
$ sed -i -e 's/\r//g' windows.sh
사이고에게
개행 코드 문제는 "Windows에서 편집한 스크립트를 서버에서 실행하면 의미를 모르는 오류가 나왔다!"라고 할 때 일어나는 경우가 많습니다. 글쎄.
Reference
이 문제에 관하여(Windows -> Linux는 개행 코드에 주의! !), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/roadricefield/items/32d781ed93bd70dded73
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Windows -> Linux는 개행 코드에 주의! !), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/roadricefield/items/32d781ed93bd70dded73텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)