arison.jp arison.jp blog - 現在をたのしく、未来をたのしむ。日常の思い出兼備忘録。

UNIX系OSでファイル編集(行追加)後”^M”という変な記号が出る

UNIX系OSでファイルを編集(行追加)した後に、viで開くと”^M”という変な記号が出る。
でも、diffを取ると差分は出ない。

”^M”という変な記号はWindowsの改行コードのCR部分をエラーと認識してしまうために起こる現象。

Windowsでの改行コードCR+LF、UNIX系OSでの改行コードがLF、なのでWindowsの改行コードCR+LFの内、CRが「^M」として見えてしまう。
ちなみに、viで開いた時にCRLFだけだと、”^M”は出ない。

でも、最初はCRLFだけのファイルで、一部行を追加してLFが含まれてしまうと、”^M”という変な記号が出てしまう。

vi ファイル名

vi -b ファイル名
で開けば、ファイルをバイナリモードで開いて”^M”が表示されるのでわかるかも。
:%!xxd
でバイナリ16進数ダンプ形式に変換
CR(Carriage Return:行頭復帰、コード0x0D)
LF(Line Feed:改行、コード0x0A)

たしかに、もともとCR+LF同士だとdiffで差分でないよね。
改行コードがCR+LFだけならviが気を利かせて”^M”を表示しないと。
で、改行コードが混在するから、viがきちんと”^M”を表示してくれると。

【参考】
Windowsのファイルを読み込むと、改行の位置に「^M」が・・・ – Linux系OS – 教えて!goo
http://oshiete.goo.ne.jp/qa/2413601.html

vimでバイナリを表示し、値を変更したい – rderaログ
http://d.hatena.ne.jp/rdera/20081022/1224682665

About arison

大都会岡山の南部にある玉野市生まれ。 大都会岡山のIT会社(目標は大都会No.1)でコンピュータとお客を相手に日夜格闘中。 関東出張中はグルメブログ。 基本的に遊び人のおっさん。 ライフハックとガンダム好き。ギガフロート玉野を浸透中。

07. 2月 2013 by arison
Categories: 日記, 仕事, プログラミング | Tags: , , | Leave a comment

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください