Unix/Linux 와 Windows 의 개행문자처리방식이 달라서 CGI 프로그램을 설치할때 종종 귀찮은 문제가 발생하곤 합니다. 원인과 대책을 정리해보죠.
문제 원인 ¶
- 아래의 도표에서처럼 OS에 따라서 개행문자처리방식이 다르다.
OS 개행문자 특수문자표시 Unix/Linux <NL> \n DOS/윈도우계열 <CR> <NL> \r\n Mac OS 계열 <CR> \r
LF(line feed)보다 NL(new line)이라는 기호를 사용합니다.
FTP 사용시 ¶
텔넷 접속시 ¶
참고 ¶
- Perl과 쉘을 이용한 변환 스크립트 (인터넷을 뒤져서 퍼왔구먼요^^)
dos2unix : 변환식 = perl -pi -e 's/\r//' $*
#!/bin/sh ############################################################## # # * DOS to Unix * File Converter # ############################################################## # 도스형 파일을 유닉스형으로 변환하는 도구 ############################################################## # 1999. 9. 6. by lawwal@way.co.kr ############################################################## EXEC_NAME=`echo $0 | awk -F/ '{print $NF;}'` ## 도움말 if [ $# -lt 1 ] then echo " USAGE: $EXEC_NAME File [ Files... ]" echo echo " Example : $EXEC_NAME waycgi.html way-board.cgi" echo exit fi ## 실행 perl -pi -e 's/\r//' $*
unix2dos : 변환식 = perl -pi -e 's/\n/\r\n/' $*
#!/bin/sh ############################################################## # # * Unix to DOS * File Converter # ############################################################## # 유닉스형 파일을 도스형으로 변환하는 도구 ############################################################## # 1999. 9. 6. by lawwal@way.co.kr ############################################################## EXEC_NAME=`echo $0 | awk -F/ '{print $NF;}'` ## 도움말 if [ $# -lt 1 ] then echo " USAGE: $EXEC_NAME File [ Files... ]" echo echo " Example : $EXEC_NAME waycgi.html way-board.cgi" echo exit fi ## 실행 perl -pi -e 's/\n/\r\n/' $*
Q: Win2000에서 텍스트파일을 만든다음..FTP 전송을 Ascii모드와 Binary모드 두가지로 해서 리눅스 머신에 전송한다음 Vi에디터로 읽었는데, Binary 모드 전송인 경우에두 이상한 문자(\r) 없이 잘 보이네요? 이상하다 내가 실험을 잘못했나?
A:리눅스에서 많이 사용하는 VimEditor 의 경우 DOS 포맷을 인식해서 캐리지리턴이 있어도 이상한 문자 없이 보여줍니다. 한 번 vi -b filename 해서 binary 모드로 열어보세요. 줄마다 캐리지리턴이 붙어있는 것을 보실 수 있을 겁니다. 그런데, 버전따라 설정따라 보이는게 다를때가 있는 것 같더군요. 알맹이는 똑같아도. 그리고, 파일 열어서 첫 화면 떴을 때 잘 보시면 아래쪽에 &dos format& 이라고 나와있습니다.
VimEditor를 이용해서 개행문자처리방식의 변환을 할 수 있습니다. 글을 읽은 후에 저장하기 전에
:set ff=dos
나 :set ff=unix
, :set ff=mac
명령을 내리면 해당 OS의 방식으로 저장할 수 있습니다. VimEditor는 Mac/Unix/Windows에서 모두 돌아갑니다.