Linux dos2unix コマンド

Linux コマンド大全


dos2unix は、テキストファイルを DOS/Windows 形式から Unix/Linux 形式に変換する実用ツールです。主に、オペレーティングシステム間の改行コードの違いによって生じる問題を解決します。

コア機能:

  • DOS/Windows 形式のテキストファイル(CRLF 改行コード)を Unix/Linux 形式(LF 改行コード)に変換する
  • ファイルのエンコーディング問題を処理(オプション)
  • 複数のファイルを一括変換

なぜ dos2unix が必要か

改行コードの違い

オペレーティングシステムによって異なる改行コードが使用されています:

  • Windows/DOS:キャリッジリターン+ラインフィードを使用(CRLF、つまりrn)
  • Unix/Linux:ラインフィードのみを使用(LF、つまりn)
  • Mac OS(旧バージョン):キャリッジリターンを使用(CR、つまりr)

問題の症状

Windows で作成されたテキストファイルを Linux システムで開くと:

  • 表示される可能性があります^M文字(vi で確認できます)
  • スクリプトファイルが正常に実行できない可能性があります
  • 一部のツール(grep、awk など)がテキストを正しく処理できない可能性があります

dos2unix のインストール

ほとんどの Linux ディストリビューションでは dos2unix がデフォルトでインストールされないため、手動でインストールする必要があります:

Ubuntu/Debian

実例

sudo apt-get update
sudo apt-get install dos2unix

CentOS/RHEL

sudo yum install dos2unix

インストールの確認

dos2unix --version

基本構文

dos2unix [选项] 文件...

よく使うオプション

オプション 説明
-k ファイルのタイムスタンプを変更せずに保持する
-f 強制変換。バイナリファイルのチェックを無視する
-q サイレントモード。警告メッセージを表示しない
-o 元のファイルを上書き(デフォルトの動作)
-n 新規ファイルモード。元のファイルを保持し、新しいファイルに出力する
-c エンコーディングを変換(-eオプションと併用する必要があります)
-e ターゲットのエンコーディングを指定(例:-e utf8)
-b バックアップファイルを作成(.bakサフィックスを追加)

使用例

1. 基本変換

dos2unix file.txt

これにより file.txt ファイルが直接変更されます

2. 元のファイルを保持

dos2unix -n file.txt newfile.txt

元のファイルは変更されず、変換結果は newfile.txt に保存されます

3. 一括変換

dos2unix *.txt

現在のディレクトリ内のすべての .txt ファイルを変換します

4. ディレクトリを再帰的に変換

find . -type f -name "*.sh" -exec dos2unix {} ;

現在のディレクトリとサブディレクトリ内のすべての .sh ファイルを変換します

5. タイムスタンプを保持

dos2unix -k script.py

script.py を変換しますが、その変更日時は保持します


実際の適用シナリオ

1. Windows から転送したスクリプトを修正する

実例

# スクリプトファイルを変換
dos2unix backup_script.sh

# 実行権限を追加
chmod +x backup_script.sh

# スクリプトを実行
./backup_script.sh

2. 開発チームで共有する設定ファイルを処理する

実例

# 設定ディレクトリ全体を変換
find /etc/myapp/conf.d/ -type f -exec dos2unix {} ;

3. Linux サーバーにアップロードするファイルを準備する

dos2unix -b *.php  # 转换并创建备份

注意事項

  1. バイナリファイル:バイナリファイル(画像、PDF など)に dos2unix を使用しないでください。ファイルが破損します
  2. バージョン管理:Git などのバージョン管理システムでは、改行コードの処理方法を統一して設定することをお勧めします
  3. エンコーディングの問題:ファイルに非 ASCII 文字が含まれる場合は、-cと-eオプションを使用してエンコーディングを処理する必要があるかもしれません
  4. バックアップ:重要なファイルを変換する前に、-bオプションを使用してバックアップを作成することをお勧めします

代替方法

システムに dos2unix がインストールされていない場合は、以下の代替方法を使用できます:

1. tr コマンドを使用する

tr -d 'r'  unixfile.txt

2. sed コマンドを使用する

sed -i 's/r$//' winfile.txt

3. vim を使用する

実例

:set ff=unix
:wq

まとめ

dos2unix は、クロスプラットフォームのテキストファイル形式の問題を処理する実用ツールで、特に以下の用途に適しています:

  • システム管理者がサーバーを保守する場合
  • 開発者が異なるプラットフォーム間で共同作業する場合
  • Windows から Linux に移行するスクリプトや設定ファイルを処理する場合

dos2unix コマンドを習得することで、改行コードの違いによって生じるさまざまな問題を効果的に回避し、作業効率を向上させることができます。


Linux コマンド大全

その他の関連リンク