BLOG main image
분류 전체보기 (32)
내 컴퓨터 (3)
행복을 위해 (1)
긁적긁적 (3)
끄적끄적 (9)
리눅스^^ (4)
자바^^ (5)
Oracle (5)
개발자론 (1)
객체지향 (1)
4,037 Visitors up to today!
Today 2 hit, Yesterday 1 hit
daisy rss
tistory 티스토리 가입하기!
2008/07/18 14:37
0x0D0A
CRLF 코드임
CarrigeReturn LineFeed

Windows 는 파일저장시 줄바꿈을 CRLF코드로 저장한다.

C언어에서 파일을 읽어들일때 Ascii 방식으로 오픈하였을때
fread 는 자동으로 0x0D0A를 -> 0x0A로 변환해준다.

즉 \n 를 출력시 파일출력일경우 0x0D0A로 저장하며
메모리상의 실행시 0x0A로 본다.

파일을 리눅스 및 Unix 로 전송시 ASCII또는 바이너리 방식으로 전송이유이기도 하다.
즉 0x0D0A -> 0x0A로 변환할것인가 말것인것에 대한 이유이다.

하지만 어떤 이유에서건 ftp 로 여러개의 파일을 전송하고
ftp 유틸리티의 기능중 확장자 분석에 의한 ASCII <-> Binary 가 정상적으로 동작하지 않을경우가
있다.

즉 윈도우의 0x0D0A 가 변환없이 유닉스 & 리눅스 장비의 0x0D0A로 저장되었을경우
우리는 리눅스에서 ^M (ctrl + V + M) 를 볼수 있다.

한개의 파일수정이라면 vi에서
:%s/^M//g 로 수정할수 있겠지만 ..

여러개의 파일일경우 어떤 방식으로 변경이 가능할까 ?
console 상에서  unix2dos, dos2unix 라는 명령이 있지만..

사용할수 없었다.

현재 내가 이런 문제에 봉착한곳은 Solaris 10 64bit OS 를 가진 장비였다.

아래와 같은 방식으로 하위 폴더내의 여러파일의 ^M(0x0D)를 없앤다.
뭐 여러가지를 복합적으로 사용한것임.

SunOS ###### 5.10 Generic_118833-33 sun4v sparc SUNW,Sun-Fire-T200
-> perl -i -pe 's/\015//g' `find ./* | grep "\.c"`
prev"" #1 #2 #3 #4 #5 ... #32 next