在Ubuntu上运行在记事本(Windows)中创建的脚本
我在Windows上创建了一个记事本文件并将其复制到Ubuntu。 该文件包含一些iptables规则。 使用chmod +x
使文件可执行并执行后,它不起作用。
但是,当我创建一个Ubuntu( gedit )文件并从记事本文件中复制相同的内容,使其可执行并运行它,它工作。
我该怎么做才能使记事本文件在Ubuntu上运行?
Windows和Linux具有不同的行尾符号。
您可以安装修复它的dos2unix
实用程序:
sudo apt-get install dos2unix
以这种方式运行:
dos2unix -n winfile.txt linuxfile.txt
还有unix2dos
实用程序。
Windows-to-Linux转换也可以在不安装任何特殊软件的情况下完成
tr -d '\r' < winfile.txt > linuxfile.txt
注意: 输入和输出文件必须不同。
sed版本将“就地”编辑文件:
sed -i 's/\r//g' file.txt
或写入另一个文件:
sed 's/\r//g' winfile.txt > linuxfile.txt
在Windows上,您需要将Notepad ++中的行尾(EOL)格式更改为UNIX:
这样它也可以在Ubuntu上运行。
Windows使用CR + LF进行换行。 在Linux / Unix中你需要LF。 因此,您必须在脚本中将CR + LF替换为LF:
安装dos2unix
sudo apt-get install dos2unix
并通过更正您的脚本
dos2unix
或通过
dos2unix -n
如果你需要一个不同的输出文件
这里有更多信息
来自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 ...]
我在Windows上使用cygwin。
用vi打开文件。 然后输入
:set ff=unix followed by :wq
将使用Unix行尾字符保存文件。
您可以在Ex模式下使用Vim:
ex -bsc '%s/\r//|x' file
-
%
选择所有行 -
替代品
-
\r
回车 -
x
保存并关闭