-------------- 다른 블로그에서 퍼 온 글입니다. --------------

^M 문자와 관련해서 게시판을 검색해 보니 다양한 방법이 소개되어 있어서 이것을 참조하여 한 문서로 정리했습니다.

Vi(m) 사용시 ^M 없애기

vi(m)을 사용하다보면 윈도우즈에서 작업한 텍스트 파일에 ^M 문자가 붙는 경우를 종종 봅니다.
특히 editplus, ultraedit 등 문서편집기에서 바로 ftp 에 업로드 하는 경우도 빈번하더군요.

현재 vim에서는 도스 문서로 읽게 되면 이 문자가 붙지 않기도 하지만, 종종 이 문자 때문에 보기가 상당히 귀찮아 보일 때가 있습니다.
특히, SQL 백업 파일을 볼 때 이 문자가 붙기도 하는데 특정한 내용을 볼 때 이런 문자가 붙은 것을 보기는 상당히 힘들죠.
(sun의 파일을 aix에서 받을 때에도 이런 문제가 발생한다고 합니다)

이 문자는 ^M은 ^+M이 아니라 Control+v+m 입니다.
따라서, 다음에 이 문자를 없앨 때도 이렇게 타이핑을 하도록 합니다.

다음은
http://www.lug.or.kr/에 올라온 몇 개의 팁을 정리한 것입니다.
생각보다 많은 방법들이 있을 수 있겠군요.

1. vi(m)이 열린 상태
1.1 문자 치환 명령 이용

다음과 같이 문자 치환 명령으로 이 문자를 없애도록 합니다.
:1,$s/^M//g

물론 이것의 입력은 다음과 같이 하도록 합니다.
:1,$s/[Control]+v+m을 누른다.//g

1.2 파일포맷 변경

vim 5.0 이상에서는 다음과 같이 명령을 내리도록 합니다
:set fileformat=unix

혹은
:set ff=unix

그리고, 저장하고 종료합니다.
:wq

이와 반대로 끝에 ^M 을 붙이려면(과연 누가..) 다음과 같이 합니다.
:set fileformat=dos

이전버전에서는 다음과 같이 합니다.
:set textmode

2. 프롬프트 상에서
2.1 dos2unix 이용

dos2unix와 unix2dos를 이용하여 변환할 수 있습니다.

다음과 같이 하면 ^M 문자가 없어집니다.
$ dos2unix [문서명](여러 파일의 경우 *.확장자)

그리고 다음과 같이 하면 ^M 문자가 생기죠.
$ unix2dos [문서명]

2.2 cat과 tr을 이용한 방법

다음과 같이 하면 해당 파일의 ^M 문자가 없어집니다.
$ cat dos-file | tr -d ^M > unix-file

2.3 perl 스크립트

다음과 같이 하면 여러파일을 한번에 바꾸게 됩니다.
# perl -i -pe 's/\015//g' *.html


3. 다른 에디터의 사용

pico 라는 에디터 아실겁니다. 기능은 별로 없지만 빠르고 간편하죠.
vi 나 emacs 에서 ^M 으로 잡히는 것이 pico에서는 안 잡히는데, 파일을 pico로 열어서 다시 이 문서를 저장합니다.
그리고 vi 나 emacs 로 읽으면 ^M 이 모두 없어진 것을 알 수 있습니다. 쉽죠?


4. man 페이지의 ^M, ^H 문자

man 페이지를 일반 화일로 바꾸면 ^M, ^H 등이 생기는데 (예, 한컴리눅스 ^H)
다음과 같이 하면 이 문자를 없애고 볼 수 있습니다.

다음은 ls 의 예입니다.

4.1 ps 또는 pdf로 변환하기

man -t [변경시킬화일] > [변경후화일명].ps
man -t [변경시킬화일] > [변경후화일명].pdf

예)
man -t ls > ls.ps 또는 ls.pdf

4.2 텍스로 변환하기

man [변환시킬화일] | col -b> [변환후 화일명].txt
리눅스에서 마스커 레이딩(유무선 공유기와 같은기능~즉, 가상아이피 설정)을 해봤습니다~

mylg070 폰을 샀는데, 기숙사에서는 유무선 공유기로 편히 쓸 수 있지만
학교안에서는 인터넷 폰을 쓸 수가 없더군요

학교안에서 쓰려고 남는 리눅스 머신으로 유무선 공유기를 만들어 봤습니다~

자세하게는 못 쓰고, 까먹지 않으려고 한번 작성해 봅니다. ㅎㅎ

기본 준비물 (Minimum requirement)

1. 리눅스 설치된 PC
2. AP가 가능한 무선랜카드 1개
3. 외부와 연결된 이더넷 카드 1개

아래는 iptables 의 설정

외부 랜카드는 eth0, 외부 IP는 210.107.250.80, 그리고 내부 랜카드는 ath1라고 가정한다면:

$> modprobe ipt_MASQUERADE # 만약 실패하더라도 다음을 계속하시오.
$> iptables -F; iptables -t nat -F; iptables -t mangle -F
$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.107.250.80
$> echo 1 > /proc/sys/net/ipv4/ip_forward

설명)

첫째줄: 마스커레이딩 모듈을 올리는 작업입니다. 안될경우에는 커널컴파일을 해야 합니다. -_-; (자세한건 생략, 검색하시길)

둘째줄: Iiptables 기초 세팅입니다.

셋째줄: 오는 패킷을 eth0의 아이피로 포워딩하라는 명령입니다.

넷째줄: ip 포워딩을 가능하게 합니다.

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$> iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT
$> iptables -P INPUT DROP # 위의 두 줄이 성공했을 경우에만
$> iptables -A FORWARD -i eth0 -o eth0 -j REJECT

여기는 웬만한 서비스가 가능하도록 허락하는 세팅입니다.

위는 KLDP글을 참조 하였습니다 ^^ 이와 같이 마스커레이딩을 하고요


이제 무선랜카드 설정을 해야 합니다 ~


$> wlanconfig ath0 destroy 
$> wlanconfig create wlandev wifi0 wlanmode ap # ap 모드로 설정
$> iwconfig ath0 ESSID now #ESSID 설정
$> iwconfig ath0
ath0 IEEE 802.11g ESSID:"nalab_now2"
..................
MODE:Master

라고 되면 성공입니다.


다음에는 IP 설정입니다. 가상 IP 주소는 192.168.xxx.xxx 를 쓰지요

제일 많이 쓰는 192.168.0.xx 주소로 예를 들겠습니다.




AP 설치된 컴퓨터 
$> ifconfig ath0 192.168.0.1 netmask 255.255.255.0

인터넷 폰
IP: 192.168.0.2
NETMASK: 255.255.255.0
GW: 192.168.0.1
DNS: 아무데나..



이렇게 하고 폰이 되면 되는겁니다. ^^ 쓰고 보니 조금 긴거 같기도;;

덕분에 학교에서도 인터넷폰을 쓰는군요 ㅎㅎ

모두 아껴서 쓰자구요 ^^

뭐, 이상한거나 잘못된거 잘안되시면 연락주시면 좀 자세히 적어보도록할게요~


+ Recent posts