改行コードを変更する

[戻る]

ある時, 普段 Linux に触ったことの無い (でもコンピュータには詳しい) 人から, 本や WEB の情報の通りやってるつもりだけど動かないと 相談を受けました. 一見どこもおかしくないスクリプトかメイクファイルかだったと記憶してます. 話を聞くと Linux 上のエディタが嫌だったため samba で共有して Windows のエディタで作ってるようです. もしかしてと

# cat -v Makefile
みたいな感じで作ったファイルを覗いてみると, 案の定行末に ^M が付いていました.

その人の場合, 「改行コードが \r\n になっているからだと思う」 と言うだけで自力で解決しましたが, せっかくなので変換する方法を書いておきます.

私が普段使うのは emacs に取り込む 方法です. mule なら M-x set-file-coding-system で *euc-japan*unix を, emacs (20.7) なら set-buffer-file-coding-system で euc-japan-unix を 選びます.

問題が起きた端末の前で, ペペッと解決してあげるため, お手軽にするのなら, Makefile 等日本語が入ってなければ

# tr -d "\r" < Makefile > hoge
ですかね. 後は hoge を Makefile に mv します. 一方日本語が入っていれば化ける可能性があるので,
# perl -pe 's/\r$//g' Makefile > hoge
とかです.

ただし, これらは Windows (dos) ⇒ Linux 限定です. Mac は考慮してません. Windows, Linux, Mac はそれぞれ改行コードが異なります. 他の環境で作られたファイルを自分の環境の改行コード合わせるように 汎用性を持って作らせたかたら

# perl -pe 's/\x0D\x0A|\x0D|\x0A/\n/g' Makefile > hoge
と書くのが王道のようです. もっともこんなもんコマンドライン上で cat -v で確認しつつペペッと書く もんなので, ここまでやりません.


2008.1