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バイト表示は、まだ「テキスト」と「バイナリ」を区別する理由です。こんな。