在 Ubuntu 上运行在记事本 (Windows) 中创建的脚本

Alb*_*ert 14 windows bash scripts encoding

我在 Windows 上创建了一个记事本文件并将其复制到 Ubuntu。该文件包含一些 iptables 规则。使用chmod +x并执行该文件可执行文件后,它不起作用。

但是,当我创建一个 Ubuntu ( gedit ) 文件并从记事本文件中复制相同的内容,使其可执行并运行时,它工作正常。

我应该怎么做才能使记事本文件在 Ubuntu 上运行?

Pil*_*ot6 20

Windows 和 Linux 有不同的行尾符号。

您可以安装dos2unix修复它的实用程序:

sudo apt-get install dos2unix
Run Code Online (Sandbox Code Playgroud)

以这种方式运行它:

dos2unix -n winfile.txt linuxfile.txt
Run Code Online (Sandbox Code Playgroud)

还有unix2dos实用程序。

Windows 到 Linux 的转换也可以在不安装任何特殊软件的情况下完成

 tr -d '\r' < winfile.txt > linuxfile.txt
Run Code Online (Sandbox Code Playgroud)

注意: 输入和输出文件必须不同。

一个sed的版本将编辑“到位”的文件:

 sed  -i 's/\r//g' file.txt
Run Code Online (Sandbox Code Playgroud)

或写入另一个文件:

 sed 's/\r//g' winfile.txt > linuxfile.txt
Run Code Online (Sandbox Code Playgroud)


小智 6

在 Windows 上,您需要将 Notepad++ 中的行尾 (EOL) 格式更改为 UNIX:

在此处输入图片说明

这样它也可以在 Ubuntu 上运行。

  • 这样它_只能_在 Ubuntu/Linux 上运行。虽然像 Notepad++ 这样的特殊高级编辑器可能会识别行结束类型并正确显示它,但普通的 Windows 记事本等却不会。 (2认同)
  • 是的当然。我知道并因此投了赞成票。我只是想澄清这一事实,以便当文件现在在普通记事本中看起来很奇怪时,没有人会感到惊讶。 (2认同)
  • 我认为 OP 指的是 Windows 中的 [内置程序 Notepad](http://en.wikipedia.org/wiki/Notepad_%28software%29),而不是第三方程序 [Notepad++](http://en.wikipedia.org/wiki/Notepad_%28software%29) /en.wikipedia.org/wiki/Notepad%2B%2B)。如果您建议为此目的在 Windows 上安装 Nodepad++,您能否在答案中更明确地说明这一点?就目前的情况而言,我认为这是令人困惑的。 (2认同)