dos2unixがデフォルトで特殊文字を含むファイル変換を中断するのはなぜですか?

dos2unixがデフォルトで特殊文字を含むファイル変換を中断するのはなぜですか?

マニュアルページの状態dos2unix:

Binary files are automatically skipped, unless conversion is forced.

...

-f, --force
    Force conversion of binary files.

特殊記号(垂直タブなど)を含むファイルでこのフラグなしで実行すると、dos2unix次のメッセージで失敗します。-f

dos2unix: Binary symbol found at line 123
dos2unix: Skipping binary file foo.csv

私の質問は、特別なシンボルを持つファイルが見つかった場合、なぜデフォルトの動作がdos2unixユーザーが間違っていると仮定するのですか?ユーザーが実際のバイナリでこれを実行して破損する可能性があることは注意してください。

ベストアンサー1

これは、テキストファイルの2文字がDOS / Windowsで行末として使用され、Unix / Linux行末に置き換えられる必要があることが知られていますが、dos2unix「バイナリ」ファイルではそれほど明確ではないためです。0x0d0a0x0a

「バイナリ」ファイルは、実行可能ファイル、アーカイブ、データベース、未知のプログラムのデータファイル、または前述の圧縮バージョンです。これには、10進値を含むデータバイトペア、または0x0d0aCPU命令を含めることもできます。short int3338

このファイルを交換すると、0x0d0aファイルが破損します(機能しなくなります)。0x0a

これは一般的に悪い考えなので、dos2unix基本的には行われません。

しかし、Unix方式は、人々が自分が何をしているのかを知っていると仮定し(必要に応じて自分で足を撃つこと)、dos2unix「バイナリ」を検出するのに完璧ではないので、偽の肯定の場合はこれを無視することが可能です。

おすすめ記事