Ubuntuでメモ帳(Windows)で作成されたスクリプトを実行する


14

Windowsでメモ帳ファイルを作成し、Ubuntuにコピーしました。このファイルには、いくつかのiptablesルールが含まれています。それを使用chmod +xして実行するファイルを実行した後、動作しませんでした。

ただし、Ubuntu(gedit)ファイルを作成し、同じ内容をメモ帳ファイルからコピーし、実行可能にして実行すると、動作しました。

NotepadファイルをUbuntuで実行するにはどうすればよいですか?


回答:


20

WindowsとLinuxでは、行末記号が異なります。

dos2unixそれを修正するユーティリティをインストールできます。

sudo apt-get install dos2unix

この方法で実行します:

dos2unix -n winfile.txt linuxfile.txt

unix2dosユーティリティもあります。

WindowsからLinuxへの変換は、特別なソフトウェアをインストールせずに行うこともできます。

 tr -d '\r' < winfile.txt > linuxfile.txt

注: 入力ファイルと出力ファイルは異なる必要があります。

sedのバージョンは、「場所に」ファイルを編集します:

 sed  -i 's/\r//g' file.txt

または、別のファイルに書き込みます。

 sed 's/\r//g' winfile.txt > linuxfile.txt

コマンドが間違っています。dos2unix winfile.txt linuxfile.txt両方のファイルを変換しようとします。このコマンドを使用しますdos2unix -n winfile.txt linuxfile.txt
AB

@AB修正。あなたが正しいです。入力パラメータが変更されました。私は長い間それを使用しませんでした。
Pilot6

とにかく、良い答え+1
AB

どうもありがとうございました。Notepad ++がなく、新しいパッケージ(dos2unix)をインストールしたくないため、「tr」コマンドを使用しました。私はそれを試してみたが、うまくいった。ただし、ソースファイルと宛先ファイルは異なる必要があることに注意してください。
アルバート

@Albert答えに追加されました。別の方法でファイル名を保持することもできますが、努力する価値はありません。とにかく、ファイルを混同しないように別の名前を付けることをお勧めします。
Pilot6

6

Windowsでは、Notepad ++の行末(EOL)形式をUNIXに変更する必要があります。

ここに画像の説明を入力してください

そうすれば、Ubuntuでも動作します。


1
そうすれ、Ubuntu / Linuxでのみ動作します。Notepad ++のような特別な高度なエディターは行末タイプを認識し、とにかくそれを正しく表示するかもしれませんが、通常のWindowsのメモ帳などはそうしません。
バイトコマンダー

@ByteCommanderはい、しかし彼はそれをUbuntuで実行したいと考えています。

1
はい、もちろん。したがって、私は知っており、賛成しました。この事実を明確にしたかったので、通常のメモ帳でファイルが奇妙に見えても誰も驚かないようにしています。
バイトコマンダー

2
OPは、サードパーティのプログラムNotepad ++ではなく、Windowsの組み込みプログラムNotepadを参照していると思います。この目的のためにNodepad ++をWindowsにインストールすることを提案する場合、回答でそれをより明確にすることができますか?現在のところ、混乱していると思います。
ピーターモーテンセン

@PeterMortensen私は彼の質問をもう一度読みました。私は誤解しているとは思わず、私の答えは彼の問題に対する良い解決策の1つです。

2

Windowsは、改行にCR + LFを使用します。Linux / Unixでは、LFが必要です。したがって、スクリプトでCR + LFをLFに置き換える必要があります。

インストール dos2unix

sudo apt-get install dos2unix

スクリプトを修正するには

dos2unix <your_script_file>

または経由

dos2unix -n <your_script_file> <out_file>

別の出力ファイルが必要な場合

詳細はこちら


から man dos2unix

NAME
       dos2unix - DOS/Mac to Unix and vice versa text file format converter

SYNOPSIS
           dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
           unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]

1

Windowsではcygwinを使用しています。
viでファイルを開きます。次に入力してください

:set ff=unix<enter> followed by 
:wq<enter> 

Unixの行末文字でファイルを保存します。


0

ExモードでVimを使用できます:

ex -bsc '%s/\r//|x' file
  1. % すべての行を選択

  2. s 代替

  3. \r キャリッジリターン

  4. x 保存して閉じます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.