0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsで作ったスクリプトをLinuxで動かすときは改行コードに要注意

Posted at

概要

Windows PCで作成したシェルスクリプトをUSBメモリ経由でLinux環境(ラズパイ)に移動して実行する際、正常に動作しないことがありました。本記事では、この問題の原因と解決方法について説明します。

問題の原因

Windows環境とUnix/Linux環境では、テキストファイルの改行コードが異なります。

  • Windows: CRLF(Carriage Return + Line Feed, \r\n
  • Unix/Linux: LF(Line Feed, \n

この改行コードの違いにより、Linux環境でスクリプトを実行した際にコマンドが正しく解釈されず、期待した動作を行わない場合があります。

解決方法1:trコマンドによる変換

tr -d '\r' < ./hoge.sh > ./huga.sh

この方法では、キャリッジリターン(\r)を削除して新しいファイルを作成します。元のファイルは変更されません。

解決方法2:sedコマンドによる変換

sed -i 's/\r$//' ./hoge.sh

sedコマンドの-iオプションを使用することで、ファイルを直接編集できます。行末のキャリッジリターンを削除します。

解決方法3:dos2unixコマンドによる一括変換

複数のスクリプトファイルを一括で変換する場合は、dos2unixコマンドを使用します。

# Raspberry Pi OS(Debian系)なら
sudo apt install dos2unix

# Ubuntu環境なら
sudo apt-get install dos2unix

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

このコマンドは、指定したディレクトリ以下のすべての.shファイルを検索し、改行コードをUnix形式に変換します。

まとめ

Windows環境で作成したスクリプトファイルをLinux環境で実行する際は、改行コードの違いに注意する必要があります。特に複数のファイルを扱う場合は、dos2unixコマンドを使用した一括変換が効率的です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?