DOSテキストファイルをUnixに変換

DOSテキストファイルをUnixに変換

DOS形式のPHPスクリプトが複数あります(ステータスバーに表示されviます[noeol] [dos])、期待どおりに使用できません。

dos2unix私は行末を修正するためにそれらを実行しました。

dos2unix index.php

ただし、ファイルを開くとステータスバーviに表示されます。[noeol]

viの16進エディタモード( )で確認した結果、:%!xxd驚くべき内容はありませんでした。

ソースファイルの行末は次のようになります。0x0D 0x0A

実行後に次dos2unixのような場合:0x0A

また、ファイルの最後の行に正しい行の終わりがあり、そこにもあることを確認しました(0x0A)。

また何がこの問題を引き起こす可能性があり、心配する必要がありますか?

私はCentOS 5.6 x64を実行しています。

答え1

@Kloxが言ったように、それ以降のrunning dos2unix残りの問題はvi最後の行に改行がありません。

ファイルを開いてvi保存すると、改行が追加されます。

または、全体の操作をまとめて実行することもできますed

#!/bin/bash
for f in <list-of-files-goes-here>; do
    ed -s -- "$f" <<<$',s/\r//g\nw' >/dev/null
done

答え2

最後の行に行末(\ n)がないという警告のみが表示されます。

答え3

DOSシステムは行の末尾にキャリッジリターン(eol)文字を入力します。これはviに次のように表示されます^M

以下を実行してみてください。

:%s/^M//g

答え4

(以前のskool viの代わりに)vimを使用している場合は、次のことができます。

:set ff=dos
:e!

見苦しい "^M" サフィックスなしで PHP ファイルを編集できます。私はこれがDOSの「テキストファイル」形式でも保存されると思います。これは、何らかの方法でWindowsとファイルを共有する場合に便利です。

いくつかのプライベート:MS-DOS用に選択された2バイト行の終わりのマークは、セグメント、ドライブ文字、および「\」ディレクトリ区切り文字に続いて、2番目にMS-DOSが世界に課した最大の問題の1つでした。 。この2バイト表示は、まだ「テキスト」と「バイナリ」を区別する理由です。こんな。

関連情報