我有一些在Windows上创建的Shell脚本。我想在它们上运行dos2unix
。
我读到dos2unix
适用于Linux。
是否有办法在Windows上将我的文件转换为Unix换行符?
我有一些在Windows上创建的Shell脚本。我想在它们上运行dos2unix
。
我读到dos2unix
适用于Linux。
是否有办法在Windows上将我的文件转换为Unix换行符?
您可以使用 Notepad++。
递归转换目录的步骤如下:
\r\n
\n
我用Notepad++解决了这个问题。
步骤如下:进入编辑菜单 -> EOL转换 -> Unix。
perl
,则可以直接运行以下命令:perl -i -p -e "s/\r//" <filename> [<filename2> ...]
在PowerShell中,由于.NET平台提供了许多工具,因此有很多解决方案可供选择。
使用文件路径$file = 'path\to\file'
,我们可以使用以下方法:
[IO.File]::WriteAllText($file, $([IO.File]::ReadAllText($file) -replace "`r`n", "`n"))
或者
(Get-Content $file -Raw).Replace("`r`n","`n") | Set-Content $file -Force
您可以使用-replace "`r", ""
替代原来的方法。
如果要对所有文件执行此操作,只需将文件列表传递给上述命令即可:
Get-ChildItem -File -Recurse | % { (Get-Content -Raw `
-Path $_.Fullname).Replace ("`r`n", "`n") | Set-Content -Path $_.Fullname }
请看
对于较大文件,您可能需要使用使用powershell替换CRLF的缓冲解决方案
至少有两个资源可供使用:
\r\n
\n
我知道这可能有点脱离上下文,但我还是想分享我的想法,因为它在我的使用情况中很有用...
如果要将文件存储在git仓库中,您可以通过.gitattributes文件强制设置其行结尾。请参见:如何使git不更改特定文件的行结尾?
\r\n
\n
如果上述方法不起作用 -
mvn clean install
在Windows上,任何好的文本编辑器都支持仅使用换行符作为行终止符保存文本文件。
要将文本文件从DOS/Windows自动转换为UNIX行结尾,可以使用批处理文件JREPL.BAT,该文件由Dave Benham编写,是一个批处理文件/JScript混合体,可在Windows XP上运行使用JScript进行正则表达式替换的操作。
例如,可以使用以下命令将单个文件从DOS/Windows转换为UNIX:
jrepl.bat "\r" "" /M /F "Name of File to Modify" /O -
在这种情况下,文件中的所有回车符都被删除以进行修改。当然,也可以使用"\r\n"
作为搜索字符串,"\n"
作为替换字符串,仅删除位于行尾的回车符,如果文件中还包含其他不应在行终止符转换时删除的回车符。
通过使用命令FOR调用批处理文件JREPL.BAT来将目录中的多个文件或整个目录树从DOS/Windows转换为UNIX文本文件,匹配通配符模式的每个文件都会被转换。
批处理文件示例,将当前目录中的所有*.sh文件从DOS/Windows转换为UNIX。
@for %%I in (*.sh) do @call "%~dp0jrepl.bat" "\r" "" /M /F "%%I" /O -
批处理文件JREPL.BAT必须存储在包含此命令行的批处理文件相同的目录中。
为了理解所使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
jrepl.bat /?
call /?
for /?