Windows -> Linux는 개행 코드에 주의! !

2359 단어 WSL개행 코드

원래 개행 코드란?



안녕하세요! 바이오인포매틱스계 오타쿠 석사 학생의 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에서 편집한 스크립트를 서버에서 실행하면 의미를 모르는 오류가 나왔다!"라고 할 때 일어나는 경우가 많습니다. 글쎄.

좋은 웹페이지 즐겨찾기