Linuxサーバのファイルの改行コードについて調べる
自分が修正したファイルをgitでcommit + pushしようとしてdiffを取ったら
文字コードはUTF8なのに、改行コードがCRLFになっていた(゜-゜)
最初、自分のクライアントのVSCodeが問題なのかと思って調べてみたけど
そもそも元のファイルから改行コードがおかしいような...?(Φω|
ということで、Linuxサーバーに配置してあるファイルの改行コードについて
調べてみた手順メインで、それ以外に調べたことについてもまとめた。
[手順]
1.VSCodeで改行コードをCRLFからLFに変更(新規)
1-1.画面右下の改行コードをクリック。
※ここがCRLFになっている。
1-2.Fileメニューから[Preferences] - [Settings]を選択。
1-3.画面上中央の検索窓に「files.eol」を入力し検索。
1-4.検索結果より、既定の改行コードを確認。
※何も変更してなければ、auto defaultになっている。
1-5.auto(自動変換)からLF(\n)を選び直して保存。
1-6.新規ファイルを作成し画面右下の改行コードがLFに変更されているのを
確認。
2.VSCodeで改行コードをCRLFからLFに変更(既存)
2-1.ファイルを開いた状態で画面右下の改行コードをクリック。
2-2.画面上中央に入力窓が出るので、LFを入力しenter(実行)。
2-3.画面右下の文字コードがLFに変更されているのを確認。
3.Linuxサーバにログインしてファイルの改行コードを確認。
3-2.ソースファイルがあるディレクトリまで移動。
3-3.確認したいファイルを指定し下記コマンドを実行。
$ od -c filename
3-4.改行コードを確認。
※\r\nが表示されたらCRLFになっている。
4.Windows10クライアントのWinSCPの転送設定を確認。
4-1.WinSCPを起動し対象サーバにログイン。
4-2.画面中央上の転送設定を確認。
何も変更しなければ「デフォルト」と表示されている。
ここを、「バイナリ」に変更。
4-3.任意ファイルのダウンロードを実行し、改行コードを確認。
5.gitリポジトリでファイルの改行コードを確認。
5-1.下記コマンドを実行し出力されるリストを確認。
※ここで参考にしたサイトには、.gitconfigのcore.autoCRLF = trueの状態
で実行とあるがfalseに設定されていても確認可。
$ git grep --cached -I $'\r'
5-2.ファイル名の横の検索結果を確認。
※もし、^Mがあったらリポジトリに登録されているファイルの
改行コードがそもそもCRLFで設定されている。
[参考サイト]