Linux unix2dos コマンド

Linux コマンド大全


unix2dosunix2dos は、Unix/Linux 形式のテキストファイルを DOS/Windows 形式に変換するための実用ツールです。主にテキストファイルの行終端記号(line endings)の問題を処理します。

Unix/Linux システムでは、テキストファイルの各行は改行コード(LF、n)で終わります。一方、Windows システムでは、各行は復帰+改行(CRLF、rn)で終わります。この差異により、異なるシステム間でテキストファイルを共有する際に、形式の問題が発生する可能性があります。


unix2dos が必要な理由

以下のような場面で作業する場合、unix2dos を使用する必要があるかもしれません:

  1. クロスプラットフォームでの共同作業:Linux 上で作成したスクリプトや設定ファイルを Windows 上で使用する必要がある場合
  2. ファイル転送:FTP やその他の方法で Unix システムから Windows システムへファイルを転送する場合
  3. ツールの互換性:一部の Windows ツール(メモ帳など)は、LF のみの行末を正しく表示できない

unix2dos のインストール

ほとんどの Linux ディストリビューションではデフォルトで unix2dos がインストールされていませんが、パッケージマネージャーで簡単にインストールできます:

Debian/Ubuntu システム

例

sudo apt-get update
sudo apt-get install dos2unix

CentOS/RHEL システム

sudo yum install dos2unix

注意

unix2dosとdos2unix通常は同じソフトウェアパッケージに含まれており、dos2unixパッケージをインストールすると、この 2 つのツールが同時にインストールされます。


基本構文

unix2dos [选项] 文件...

よく使用するオプション

オプション 説明
-b 或 --keep-bom UTF-8 バイトオーダーマーク(BOM)を保持する
-c 或 --convmode 変換モード(ascii, 7bit, iso, mac)
-f 或 --force バイナリファイルを強制変換する
-h 或 --help ヘルプ情報を表示する
-k 或 --keepdate ファイルのタイムスタンプを変更せず保持する
-L 或 --license ソフトウェアライセンスを表示する
-l 或 --newline 改行のみを追加する
-m 或 --add-bom UTF-8 バイトオーダーマークを追加する
-n 或 --newfile 新しいファイルに書き込む(元のファイルを変更しない)
-o 或 --oldfile 元のファイルに書き込む(デフォルトの動作)
-q 或 --quiet サイレントモード。警告を表示しない
-V 或 --version バージョン情報を表示する

使用例

例 1:基本変換

Unix 形式のファイルを DOS 形式に変換します:

unix2dos file.txt

これにより、file.txtの行末が LF から CRLF に変換され、元のファイルが直接変更されます。

例 2:元のファイルを保持し、新しいファイルを作成

元のファイルを保持し、変換後の新しいファイルを作成したい場合:

unix2dos -n unixfile.txt dosfile.txt

例 3:複数のファイルを一括変換

ワイルドカードを使用して複数のファイルを変換します:

unix2dos *.txt

例 4:ディレクトリ内のすべてのファイルを再帰的に変換

と組み合わせてfindコマンドでディレクトリを再帰的に処理します:

find . -name "*.sh" -exec unix2dos {} ;

例 5:ファイルのタイムスタンプを保持

ファイルを変換しますが、タイムスタンプは変更しません:

unix2dos -k file.txt

実際の適用シナリオ

シナリオ 1:Windows 上で Shell スクリプトを実行する

Linux の shell スクリプトを作成したが、Windows の Git Bash や WSL で実行する必要がある場合を想定します:

unix2dos script.sh

シナリオ 2:設定ファイルをクロスプラットフォームで使用する

アプリケーションの設定ファイルを Windows と Linux で共有する必要がある場合:

unix2dos config.properties

シナリオ 3:Windows ユーザーとドキュメントを共有する

同僚がメモ帳で編集できるように、Markdown ファイルを Windows 形式に変換します:

unix2dos README.md

注意事項

  1. バイナリファイル:画像や圧縮ファイルなどのバイナリファイルには、何をしているのか明確に理解している場合を除き、unix2dos を使用しないでください(-f強制変換を使用できます)
  2. バックアップファイル:元のファイルを直接変更する場合は、重要なファイルを事前にバックアップすることをお勧めします
  3. UTF-8 BOM:Windows では UTF-8 エンコーディングを正しく認識するために BOM が必要な場合があります。-mオプションを使用して追加できます。
  4. 逆変換:DOS 形式を Unix 形式に変換する必要がある場合は、dos2unixコマンドを使用します。

よくある質問(FAQ)

Q1:ファイルの改行コードの種類を確認するには?

使用するのは、fileコマンドです:

file filename.txt

またはcatを使用して特殊文字を表示します:

cat -A filename.txt

Unix 形式では$が行末に表示され、DOS 形式では^M$。

Q2:変換後にファイルサイズは変わりますか?

はい、各行に復帰文字(CR)が 1 つ追加されるため、ファイルは通常わずかに大きくなります。

Q3:私のスクリプトが Windows で実行するとエラーになるのはなぜですか?

行末の形式が正しくない可能性があります。unix2dos で変換してから実行してみてください。

Q4:スクリプト内で自動的に検出して変換するにはどうすればよいですか?

組み合わせて使用するのは、fileコマンドと条件分岐です:

例

if file filename.txt | grep -q "CRLF"; then
    echo "File is already in DOS format"
else
    unix2dos filename.txt
fi

まとめ

unix2dosunix2dos はシンプルですが強力なツールであり、クロスプラットフォームのテキストファイル形式の互換性問題を解決します。この記事の学習を通じて、以下のことができるようになります:

  1. Unix と DOS/Windows の行末形式の違いを理解する
  2. unix2dos コマンドを正しくインストールして使用する
  3. さまざまなファイル変換シナリオに対応する
  4. よくある変換エラーを回避する

クロスプラットフォームの共同作業環境では、テキストファイルの形式を統一することで、多くの不必要な問題を回避できることを覚えておいてください。


Linux コマンド大全

その他の拡張