Linux dos2unix コマンド
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
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
dos2unix backup_script.sh
# 実行権限を追加
chmod +x backup_script.sh
# スクリプトを実行
./backup_script.sh
2. 開発チームで共有する設定ファイルを処理する
実例
# 設定ディレクトリ全体を変換
find /etc/myapp/conf.d/ -type f -exec dos2unix {} ;
find /etc/myapp/conf.d/ -type f -exec dos2unix {} ;
3. Linux サーバーにアップロードするファイルを準備する
dos2unix -b *.php # 转换并创建备份
注意事項
- バイナリファイル:バイナリファイル(画像、PDF など)に dos2unix を使用しないでください。ファイルが破損します
- バージョン管理:Git などのバージョン管理システムでは、改行コードの処理方法を統一して設定することをお勧めします
- エンコーディングの問題:ファイルに非 ASCII 文字が含まれる場合は、
-cと-eオプションを使用してエンコーディングを処理する必要があるかもしれません - バックアップ:重要なファイルを変換する前に、
-bオプションを使用してバックアップを作成することをお勧めします
代替方法
システムに dos2unix がインストールされていない場合は、以下の代替方法を使用できます:
1. tr コマンドを使用する
tr -d 'r' unixfile.txt
2. sed コマンドを使用する
sed -i 's/r$//' winfile.txt
3. vim を使用する
実例
:set ff=unix
:wq
:wq
まとめ
dos2unix は、クロスプラットフォームのテキストファイル形式の問題を処理する実用ツールで、特に以下の用途に適しています:
- システム管理者がサーバーを保守する場合
- 開発者が異なるプラットフォーム間で共同作業する場合
- Windows から Linux に移行するスクリプトや設定ファイルを処理する場合
dos2unix コマンドを習得することで、改行コードの違いによって生じるさまざまな問題を効果的に回避し、作業効率を向上させることができます。
その他の関連リンク