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

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

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

然而,当我创建一个 Ubuntu (编辑) 文件并从记事本文件复制相同的内容,使其可执行并运行它,它起作用了。

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

答案1

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

您可以安装dos2unix修复该问题的实用程序:

sudo apt-get install dos2unix

按如下方式运行:

dos2unix -n winfile.txt linuxfile.txt

还有unix2dos实用功能。

无需安装任何特殊软件,即可完成 Windows 到 Linux 的转换,方法是:

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

笔记: 输入和输出文件必须不同。

Ased版本将“就地”编辑文件:

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

或者写入另一个文件:

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

答案2

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

在此处输入图片描述

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

答案3

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 ...]

答案4

你可以在 Ex 模式下使用 Vim:

ex -bsc '%s/\r//|x' file
  1. %选择所有行

  2. s代替

  3. \r回车

  4. x保存并关闭

相关内容